我有一個QTableView中,其中兩個左和右擊鼠標導致一些工作,在QTableView中
右鍵單擊要啓動上下文菜單,左應打開另一個過程。
我爲此使用以下所連接在我的QMainWindow
connect(Table , SIGNAL(customContextMenuRequested(const QPoint&)),this, SLOT(tableContextMenu(const QPoint&)));
connect(Table , SIGNAL (clicked (const QModelIndex&)), this, SLOT(test()));
的問題是看相當簡單。由於我使用clicked()
信號來捕獲左鍵單擊 - 也會捕獲右鍵單擊。所以,如果我點擊右鍵按鈕,通過上下文菜單,該行動左側點擊保留沿發生以及。
我該如何避免這種情況? 請提醒。謝謝。
編輯
我的代碼是這樣設置:
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
?
我試過了。我把'連接(表,SIGNAL(mousePressEvent(QMouseEvent *)),這一點,SLOT(測試(QMouseEvent *)));'和'測試(QMouseEvent *)',我檢查哪個按鈕被點擊等等。但是,我總是在調試窗口的消息**對象::連接:沒有這樣的信號QTableView中:: mousePressEvent(QMouseEvent *)** – user1173240 2013-02-12 10:49:07
犯錯......他們不是插槽。它們是通過對象的事件分派器從事件隊列中接收事件的方法。閱讀文檔:http://qt-project.org/doc/qt-4.8/eventsandfilters.html – cmannett85 2013-02-12 10:52:45
Ah..context菜單不是問題。那麼,我知道我怎麼才能用'clicked()'信號來做到這一點。所以它進入'test()'插槽,我可以確定哪個按鈕被點擊過,避免右鍵點擊,只要點擊鼠標左鍵就可以繼續。這會讓事情變得更簡單,而不是重新實現。 – user1173240 2013-02-12 11:15:11