crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Скрыть или удалить элемент QMenu, как?
Гость_mor_*
сообщение 15.2.2008, 13:07
Сообщение #1





Гости








    


Поиском пользовался не нашел, гуглил, тот же результат, как такое сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.2.2008, 16:21
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


методы hide() и show() применимы ко всем виджетам, пробывал?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 21.7.2009, 1:31
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


visible = false, но меню всеровно показывается. есть ещё какие нибудь варианты?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Nicolay Sidorov
  опции профиля:
сообщение 23.7.2009, 19:45
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 23.7.2009
Пользователь №: 936

Спасибо сказали: 0 раз(а)




Репутация:   0  


->setVisible(false)
->setHidden(true)
->hide()
- ничего из этого не работает для QMenu.
Остается использовать только setEnabled(false) или setDisabled(true), на большее, видимо, рассчитывать смысла нет.

:clapping: :clapping: :clapping:
Способ скрытия QMenu найден:

Надо только подсчитать порядковый номер нужного элемента QMenu (среди всех остальных, находящихся в menuBar'e):

//QMenuBar* menuBar;

menuBar->actions()[#]->setVisible(false);

// где # - номер нужного элемента
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 23.7.2009, 19:51
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Nicolay Sidorov @ 23.7.2009, 23:45) *
Надо только подсчитать порядковый номер нужного элемента QMenu
а зачем считать? тебе должен быть известен указатель на действие (QAction).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 23.7.2009, 20:08
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Или найти по имени объекта:

void hideMenuItem(const QString &name)
{
    QList <QAction *> actions = menuBar->actions();
    foreach (QAction *action, actions) {
        if (action->objectName() == name)) {
            action->setVisible(false);
            break;
        }
    }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 24.7.2009, 8:08
Сообщение #7


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


QAction наследник QObject так что можно и стандартные функции юзать, кстати оч удобно так ка можно регулярные выражения использовать.
QList<T> QObject::findChildren ( const QString & name = QString() ) const
QList<T> QObject::findChildren ( const QRegExp & regExp ) const
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 24.7.2009, 8:17
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(kwisp @ 24.7.2009, 9:08) *
QAction наследник QObject так что можно и стандартные функции юзать, кстати оч удобно так ка можно регулярные выражения использовать.
QList<T> QObject::findChildren ( const QString & name = QString() ) const
QList<T> QObject::findChildren ( const QRegExp & regExp ) const


Тут то ты и попался в ловушку ;) При добавлении QAction к виджету, он не становится его хозяином:

Цитата
The ownership of action is not transferred to this QWidget.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 24.7.2009, 8:21
Сообщение #9


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


SABROG,
а у меня хозяин и все работает.:)
правда у меня action`Ы добавляются в один тулбар.

ты привел цитату из функции addWidget.
а если посомотреть на конструкторы QAction там есть QObject* parent.
если знаешь кого сделал хозяином всех действий думаю можно ими рулить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 24.7.2009, 8:25
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(kwisp @ 24.7.2009, 9:21) *
ты привел цитату из функции addWidget.


void QWidget::addAction ( QAction * action )

parent может быть нулем или его родителем может быть QActionGroup, или экшен может быть использован в нескольких местах.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2022, 15:58