私は 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
ますか?