Qt:无法设置拖动模式

时间:2014-11-01 12:26:08

标签: c++ qt qgraphicsview qmainwindow qtwidgets

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

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

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

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

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

^我尝试了多种其他解决方法,但我还没有找到任何解决方案,我们将非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

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

ui->imageView->setDragMode(ScrollHandDrag);

问题是您假设您可以看到ScrollHandDrag值,而它显示在QGraphicsView范围内。因此,由于您尝试在MainWindow中访问该值,因此您需要明确添加范围,如下所示:

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

请注意,即使documentation指定了此常量的范围:

  

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