1

私はこれでしばらく立ち往生してScrollHandDragいます。アプリケーションにパン機能を構築できるように、QGraphicsView のドラッグ モードを に設定しようとしています。

ただし、ドラッグモードを設定しようとすると、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;
}

main.pro

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

ビルドして実行

qmake && make
于 2014-11-01T12:51:43.937 に答える