Название: Контекстное меню для виджета, созданного в QtDesigner Отправлено: xintrea от Июль 17, 2008, 19:24 Здравствуйте!
Начал разбираться с контекстным меню, и что-то понять не могу как нада делать. Есть форма, созданная в QtDesigner. На ней три виджета - QTreeView, QListView, QTextEdit. Нужно отлавливать вызов контекстного меню для разных виджетов, т.е. для каждого виджета должно быть свое контекстное меню. Как оказалось, вызов контекстного меню - это не сигнал, а событие, которое можно переопределить для всего окна (как в примере mainwindows/menus), Код: ... Тогда будет одно контекстное меню для всего главного окна. А нужно, чтоб для разных виджетов на главном окне было разное контекстное меню. Т.е., событие нужно переопределить для каждого конкретного виджета. И тут встал вопрос - как это сделать для виджета, который определен не кодом, а положен на форму в QtDesigner? Название: Re: Контекстное меню для виджета, созданного в QtDesigner Отправлено: pastor от Июль 17, 2008, 19:41 Асистант читать нехотим:
Цитировать void QWidget::customContextMenuRequested ( const QPoint & pos ) [signal] Название: Re: Контекстное меню для виджета, созданного в QtDesigner Отправлено: spirit от Июль 17, 2008, 19:47 Код: ... в showContextMenuForTreeView создается и показывается собственно контекстное меню: Код: void MainWindow::showContextMenuForTreeView(const QPoint &pos) Название: Re: Контекстное меню для виджета, созданного в QtDesigner Отправлено: Dodge от Июль 17, 2008, 21:53 Если повнимательнее почитать ассистент, то можно найти у класса QObject метод installEventFilter... т.о. можно установить один и тот же обработчик событий вызова контекстного меню, для всех ваших виджетов. Если я вас правильно понял, это пожалуй саый удобный вариант. :)
Название: Re: Контекстное меню для виджета, созданного в QtDesigner Отправлено: xintrea от Июль 17, 2008, 21:56 Цитата: pastor Асистант читать нехотим: void QWidget::customContextMenuRequested ( const QPoint & pos ) [signal] Хотим, но полноценно немогём. Я немецкий учил. И допетрить, что помимо события надо искать сдублированный сигнал мне как слабо знающему Qt реально сложно. Цитата: spirit Код: connect(treeView, SIGNAL(customContextMenuRequested(const QPoint &)), Ога, помогло. Только обязательно вначале надо сделать Код: recordview->setContextMenuPolicy(Qt::CustomContextMenu); иначе сигнал до слота не дойдет. |