У меня есть QTableView, в котором и левой и правой кнопкой мыши результат мыши в какой-то работы.,Различия между левыми и правыми щелчками в QTableView
Правый щелчок должен запустить контекстное меню, а левый должен открыть другой процесс.
Я использую следующие соединений для этой цели в моей QMainWindow
connect(Table , SIGNAL(customContextMenuRequested(const QPoint&)),this, SLOT(tableContextMenu(const QPoint&)));
connect(Table , SIGNAL (clicked (const QModelIndex&)), this, SLOT(test()));
Проблема довольно просто увидеть. Так как я использую сигнал clicked()
, чтобы зафиксировать левый клик - правый захват тоже будет снят. Итак, если я нажму на кнопку правого клика, вместе с контекстным меню, действие , сохраненное для левого клика, также будет.
Как этого избежать? Просьба сообщить. Благодарю.
EDIT
Мой код устанавливаются следующим образом:
Table = new QTableView(this);
TableLayout *t = new TableLayout();
Table->setModel(t);
Table->setContextMenuPolicy(Qt::CustomContextMenu);
connect(Table , SIGNAL(customContextMenuRequested(const QPoint&)),this, SLOT(tableContextMenu(const QPoint&)));
Это, как я делаю это для контекстного меню правой кнопки мыши, и все они определены в P14MainWindow
конструктору, который является объектом от QMainWindow
. Теперь, где именно я должен переопределить MouseReleaseEvent
?
Я попробовал. Я поместил 'connect (Table, SIGNAL (mousePressEvent (QMouseEvent *)), это, SLOT (test (QMouseEvent *)));' и в 'test (QMouseEvent *)', я проверяю, какая кнопка была нажата и так далее. Но я всегда получаю сообщение в окне Debug, что ** Object :: connect: Нет такого сигнала QTableView :: mousePressEvent (QMouseEvent *) ** – user1173240
Err ... Это не слоты. Это методы, которые получают события из очереди событий через диспетчер событий объекта. Прочтите документы: http://qt-project.org/doc/qt-4.8/eventsandfilters.html – cmannett85
Ах..контекстное меню не проблема. Ум .. любая идея, как я могу это сделать, используя только сигнал 'clicked()'? Поэтому он входит в слот 'test()', и я могу определить, какая кнопка была нажата, избежать правого щелчка и просто продолжить, если был сделан щелчок левой кнопкой мыши? Это сделало бы вещи намного проще, чем переопределение. – user1173240