Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ QTableWidget - мышиные события

Автор: flankerr 18.2.2011, 15:04

Есть форма созданная в дизайнере. В дизейнере на форму кинут QTableWidget.
Надо отлавливать мышинные события. Вопрос как ?

Сигналов мышиных нет - елси только "клики" при это понять от какой кнопки это клик нельзя. ЭвентФильтр сообщений мышки тоже не ловит.
Унаследовать свой класс и переопределить обработчик сообщений не могу т.к. см выше создано всё через дизайнер - так что вариант отпадает.

Кто подскажет ? :rolleyes:

Автор: kwisp 18.2.2011, 15:24

Цитата
Mouse move events will occur only when a mouse button is pressed down, unless mouse tracking has been enabled with QWidget::setMouseTracking().
Цитата(flankerr @ 18.2.2011, 15:04) *
при это понять от какой кнопки это клик нельзя

а как ты определяешь?

Цитата(flankerr @ 18.2.2011, 15:04) *
Унаследовать свой класс и переопределить обработчик сообщений не могу т.к. см выше создано всё через дизайнер - так что вариант отпадает.

не факт.
в дизайнер можно свои изменённые виджеты добавлять.

Автор: flankerr 18.2.2011, 16:52

Цитата(kwisp @ 18.2.2011, 15:24) *
Цитата
Mouse move events will occur only when a mouse button is pressed down, unless mouse tracking has been enabled with QWidget::setMouseTracking().
Цитата(flankerr @ 18.2.2011, 15:04) *
при это понять от какой кнопки это клик нельзя

а как ты определяешь?

что даёт setMouseTracking() пока не понял...

В том то и вопрос что ни как. А как можно то ???
//Signals :
void cellActivated ( int row, int column )
void cellChanged ( int row, int column )
void cellClicked ( int row, int column )
void cellDoubleClicked ( int row, int column )
void cellEntered ( int row, int column )
void cellPressed ( int row, int column )
void itemActivated ( QTableWidgetItem * item )
void itemChanged ( QTableWidgetItem * item )
void itemClicked ( QTableWidgetItem * item )
void itemDoubleClicked ( QTableWidgetItem * item )
void itemEntered ( QTableWidgetItem * item )
void itemPressed ( QTableWidgetItem * item )

нет тут инфы о мыше.

Можно поставить
eventFilter(QObject *obj, QEvent *event)
но тут не получается отловить тот же
QEvent::MouseButtonPress


Цитата
Цитата(flankerr @ 18.2.2011, 15:04) *
Унаследовать свой класс и переопределить обработчик сообщений не могу т.к. см выше создано всё через дизайнер - так что вариант отпадает.
не факт.
в дизайнер можно свои изменённые виджеты добавлять.

Свои виджеты добавить можно на постояной основе - т.е. они будут свититься как все остальные это оправдано если у тебя есть компонент который используется постоянно а если это разово то нет смысла.

Автор: kwisp 18.2.2011, 17:09

Цитата(flankerr @ 18.2.2011, 16:52) *
но тут не получается отловить тот же

QEvent::MouseButtonPress

код покажи

Автор: abc 18.2.2011, 22:00

установи фильтр не на tablewidget, а на tablewidget->viewport
это у меня работало на tableview, разницы, наверное, нет

Автор: flankerr 21.2.2011, 13:25

Цитата(abc @ 18.2.2011, 22:00) *
установи фильтр не на tablewidget, а на tablewidget->viewport это у меня работало на tableview, разницы, наверное, нет

Плин, ларчик то просто открывался - про вьюпорт не подумал.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)