Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Germiona от Май 19, 2008, 11:53



Название: Как перекрыть в главном меню появление всплывающего меню?
Отправлено: Germiona от Май 19, 2008, 11:53
Главное меню состоит из всплывающих окон,но одно из них не содержит в себе никаких элементов и при его активации сразу должно происходить событие. Как это сделать и как избавиться от всплывающего пустого "хвостика" QPopup-меню?

Если использовать фильтры,то какое значение имеет e->type() при выборе команды меню?


Название: Re: Как перекрыть в главном меню появление всплывающего меню?
Отправлено: Mikhail от Май 19, 2008, 14:01
Главное меню состоит из всплывающих окон,но одно из них не содержит в себе никаких элементов и при его активации сразу должно происходить событие. Как это сделать и как избавиться от всплывающего пустого "хвостика" QPopup-меню?

Если использовать фильтры,то какое значение имеет e->type() при выборе команды меню?

Ну, например, так:
QMenu * menu; 
//menu - меню по которому кликаеш и оно не имеет подменю, как требуется

QAction * act = menu->menuAction ();
connect( act, SIGNAL(triggered()), this, SLOT(slot_act()));


Название: Re: Как перекрыть в главном меню появление всплывающего меню?
Отправлено: Germiona от Май 19, 2008, 14:22
Использую QT3, там нет таких функций  :(


Название: Re: Как перекрыть в главном меню появление всплывающего меню?
Отправлено: Germiona от Май 19, 2008, 15:15
Нашла такой способ:

Код:
QMenuBar  *menuBar = new QMenuBar(this);
int id = menuBar->insertItem( tr( "Exit" ));
menuBar->connectItem(id, this, SLOT(exit()));

В меню команда появилась,при клике слот отрабатывается.....но...если выбрать соседнюю команду в меню(появится всплывающее меню) и перевести мышь на команду "Exit",то произойдет тоже самое,что и при клике..... :-\ а мне нужно,чтобы слот отрабатывался только при клике мышкой на команду.
Как определить каким образом вызывается слот exit(): от клика мыши или просто от наведения курсора мышки при активном соседнем меню?   ???