2017-06-28 3 views
1

dicomシリーズ(qtとvtk)でいくつかの機能を作って、qtウィンドウとマウスをいくつか接続したいと思っています。mousepresseventで多くの機能を実行する方法

これは私の主要な設計である:私はzoombuttonをクリックした場合 this is my primary design

例えば、そして私は、私は画像をズームされることを望む、マウスの左ボタンで自分の画像をクリックして、 I私たちは関数mousePressEventを使用しなければならないことを知っていますが、私はこの名前をマウスとの接続に使用しなければならないことを知っています。あるいは、このような4つまたは5つの関数をそれぞれ1つの押しボタンに対して行います。 どうすればいいですか?

答えて

3

あなたが正しく示唆したように、mousePressEventを使用してマウスを押してください。マウス・プレス(ズーム、パン、...)で正しいアクションを実行するには、最後に押されたボタンを覚えておいて、それに応じて適切なメソッドを呼び出す必要があります。次のようにこれを実装することができます:あなたの助けを

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 
public: 
    MainWindow() 
    { 
     connect(ui->panButton, &QPushButton::clicked, this, &MainWindow::onPan) 
     connect(ui->zoomButton, &QPushButton::clicked, this, &MainWindow::onZoom) 
     ... 
    } 

protected slots: 
    enum Action {None, Pan, Zoom, ...}; 
    void onPan() {currentAction = Pan;} 
    void onZoom() {currentAction = Zoom;} 

protected: 
    void mousePressEvent(QMouseEvent *event) 
    { 
     switch(currentAction) 
     { 
     case Pan: 
      // perform Pan operation 
      break; 
     case Zoom: 
      // perform Zoom operation 
      break; 
     } 
    } 

protected: 
    Action currentAction; 
}; 
+1

おかげで、私はこのソリューションをしようとしていますし、私はfuntionsパン、ズームを書いています...私はあなたの結果 – Jasseur

+0

を教えてくれる、それがうまく機能します!どうも – Jasseur

関連する問題