Russian Qt Forum

Qt => Общие вопросы => Тема начата: vasa_sol от Январь 04, 2007, 02:02



Название: замучил DataTable
Отправлено: vasa_sol от Январь 04, 2007, 02:02
Здравствуйте всем!
Хочу на QDataTable (Qt 3.3) сделать свое popup-меню. Делаю в констукторе
dataTable3 = new QDataTable(....);
....
dataTable3->installEventFilter( this );
....
bool eventFilter( QObject *obj, QEvent *ev )
{
if ( obj == dataTable3 ) {
   if (ev->type() == QEvent::ContextMenu) {

не работает собака - все также вываливается Insert,Delete,Update, хотя от клавы события if (ev->type() == QEvent::KeyPress) перехватываются и обрабатываютя. Как убить "стандартное" вываливание Insert,Delete,Update и как сделать правильно свое меню?

Помогите плз, второй день умираю.....

vasa


Название: замучил DataTable
Отправлено: Alexei от Январь 04, 2007, 08:08
Код:
if (ev->type() == QEvent::ContextMenu)
{
  ...
  return true;
} else
  return QObject::eventFilter(obj, ev)


По-моемому, пример с installEventFilter есть и в Qt3.


Название: добавление
Отправлено: vasa_sol от Январь 04, 2007, 15:17
не работают эти примеры ..... с любыми event .... именно с мышкой, с клавой - никаких проблем


Название: замучил DataTable
Отправлено: Dendy от Январь 04, 2007, 15:41
Попробуй:

Код:
dataTable3->viewport()->installEventFilter( this );
...
if ( obj == dataTable3->viewport() )
{
   ...
}


Название: замучил DataTable
Отправлено: vasa_sol от Январь 04, 2007, 18:41
эффект тот-же - вываливается надоевшее Insert и проч ...... :(((


Название: замучил DataTable
Отправлено: BaltikS от Январь 05, 2007, 01:05
а попробуй унаследоваться от него и переописать contextMenuEvent или contentsContextMenuEvent


Название: замучил DataTable
Отправлено: vasa_sol от Январь 05, 2007, 14:17
с наследованием работает. только гемор - в наследника приходится запихивать что-то от родителя ... что родителю хотелось-бы оставить

добавлено спустя 29 минут:

 .. кстати а как contextMenuRequested запихнуть в наследника. конфликт с QTable  не образуется?