1

我已经坚持了一段时间了,我正在尝试将我的 QGraphicsView 的拖动模式设置为ScrollHandDrag以便我可以在我的应用程序上构建平移功能。

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

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

void MainWindow::on_btnCrop_clicked()
{
    cropping = true;
    QApplication::setOverrideCursor(Qt::CrossCursor);

    // Stuck with this...
    ui->imageView->setDragMode(ScrollHandDrag);
}

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

4

1 回答 1

1

这不是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;
}

主程序

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

构建并运行

qmake && make
于 2014-11-01T12:51:43.937 回答