我已经被这个问题困扰了一段时间,现在我正试图将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