gpt4 book ai didi

c++ - 如何在 mousepressevent 中执行许多功能

转载 作者:行者123 更新时间:2023-11-30 02:25:05 26 4
gpt4 key购买 nike

我想在 dicom 系列(使用 qt 和 vtk)上实现一些功能,并且我想在 qt 窗口和鼠标之间建立一些连接。

这是我的主要设计: this is my primary design

例如,如果我点击 zoombutton,然后我用鼠标左键点击我的图像,我希望图像被缩放,我知道我们必须使用函数 mousePressEvent 但我已经看到我们必须将此名称用于与鼠标的任何连接,或者我想做 4 或 5 个这样的函数,每个函数一个按钮。我该怎么做?

最佳答案

正如您正确建议的那样,您应该使用 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;
};

关于c++ - 如何在 mousepressevent 中执行许多功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44797115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com