Qt:无法设置拖动模式



我已经被这个问题困扰了一段时间,现在我正试图将QGraphicsView的拖动模式设置为ScrollHandDrag,以便在我的应用程序上构建平移功能。

然而,每当我尝试设置拖动模式时,Qt总是抱怨DragMode是一个未声明的标识符。

我还打算建立一个裁剪功能(我想我会使用橡皮筋拖动吗?),我只是想知道为什么我不能在View 上设置拖动模式

void MainWindow::on_btnCrop_clicked()
{
    cropping = true;
    QApplication::setOverrideCursor(Qt::CrossCursor);
    // Stuck with this...
    ui->imageView->setDragMode(ScrollHandDrag);
}

^我已经尝试了多种其他解决方案,但还没有找到任何解决方案,任何建议都将不胜感激。

这不是特定于QGraphicsView的问题,而是通用C++。您的问题位于以下行:

ui->imageView->setDragMode(ScrollHandDrag);

问题是,您假设您可以看到ScrollHandDrag值,而它显示在QGraphicsView范围内。因此,由于您正试图在MainWindow中访问该值,因此需要按如下方式显式添加作用域:

ui->imageView->setDragMode(QGraphicsView::ScrollHandDrag);

请注意,即使是文档也会指定这个常量的范围:

QGraphicsView::ScrollHandDrag 1光标变为指针,拖动鼠标将滚动滚动条。此模式可在交互式和非交互式模式下工作。

这是我的最低建筑代码:

#include <QGraphicsView>
int main()
{
    QGraphicsView graphicsView;
    graphicsView.setDragMode(QGraphicsView::ScrollHandDrag);
    return 0;
}

main.pro

TEMPLATE = app
TARGET = main
QT += widgets
SOURCES += main.cpp

构建并运行

qmake && make

最新更新