![]() |
|
|
![]()
|
|
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Доброе. Подскажите.
Есть своя имплементация QFrame, на котором есть еще виджеты. Переопределяю: void myQFrame::mousePressEvent(QMouseEvent *event); Вставляю в protected, хотя влиять не должно. В общем, куда бы я не щелках, обработчик просто не вызывается... По хорошему, в этом QFrame есть QTableWidget (создаются в дизайнере), и вот надо обрабатывать клик на элементах таблицы (элементы создаются кодом - динамически). Куда копать, чтоб реализовать? Спасибо. |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Неужто сигналов не хватает ?
|
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: нет Всего: 10 |
Ну а если чисто с теоретической стороны, то можно поставить фильтры. Вот выписка из книжки по Qt4 на этот счет
-------------------- Пролетал мимо. |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Нужно отловить именно правый клик, чтоб popup меню показать.
Для моей задачи (см. 2 строки выше), имхо, это слишком громоздкий вариант с точки зрения того, что eventFilter так или иначе, но будет "ловить" все события, что не рационально. |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Я такой слот создавал.
Возможно в QTableWidget еще надо будет свойство поменять, чтобы испускался сигнал customContextMenuRequested. |
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: нет Всего: 10 |
Ну для простого контекстного меню. Выписка из той же книжки
Это сообщение отредактировал(а) Fin - 13.9.2008, 11:50 -------------------- Пролетал мимо. |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
А как мне это с QTableWidget увязать?
|
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: нет Всего: 10 |
Кстати в книге spreadsheet и есть потомок от QTableWidget. Просто к нему подключаеш объекты QAction и говориш, что для контекстного меню надо использовать лист этих объектов.
Вот эта книга http://trolltech.com/developer/books/2 Раньше они давали скачать книгу. Сейчас только купить :( Это сообщение отредактировал(а) Fin - 14.9.2008, 16:18 -------------------- Пролетал мимо. |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Продолжаем разговор
Итак. Сделал так. Создал в конструкторе QMenu, настроил все QAction. Все работает. При клике на таблице выделяется строка, и я сохраняю ее номер в переменную (для любой работы пункта меню необходимо знать одно из значений в выделенной строке). Переопределил contextMenuEvent(), в котором показываю menu.exec(). Фишка в чем. Вот кликнул я правой кнопкой мыши на какой-то строке, меню появилось, все хорошо. Теперь, если я хочу кликнуть на другой строчке, то у меня меню вызванное в предыдущий раз - закрывается, выделения новой строчки не происходит, и новое меню вызывается для старой выделенной строки. Другими словами хочу сделать, как в экселе: нажал правой кнопкой мыши - выделилась нужная строка - не смотря ни на что, показалось меню для этой новой строки. Как победить? В качестве пояснения. Есть TForm (QFrame) и contextMenuEvent() определен для него. Таблица - TForm.tblWidget. Спасибо. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |