我想在dicom系列上使用qt和vtk制作一些函数,我想在qt窗口和鼠标之间建立一些连接。
这是我的主要设计:
例如,如果我点击zoombutton,然后我用鼠标左键点击我的图像,我希望图像将被缩放,
我知道我们必须使用函数mousePressEvent
,但我已经看到我们必须使用这个名称与鼠标的任何连接,或者我想做4或5这样的函数,每个函数用于一个按钮。
我怎么能这样做?
答案 0 :(得分: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;
};