3

Qtプロジェクトでファイルパスを取得しようとしています。KDE4とQt4.8を使用していたときはすべて正常に機能していましたが、Qt5とGnome3に更新しました。QFileDialogこれで次のようになります。

ここに画像の説明を入力してください

またはこのようにさえ:

ここに画像の説明を入力してください

しかし、多くの場合、次のようになります。

ここに画像の説明を入力してください

ダイアログの初期パスとして渡されるパスに応じて動作が変化することに気づきました。例:電話した場合

QString path = QFileDialog::getOpenFileName(qobject_cast<QWidget*>(this->parent()), tr("Choose model"), QCoreApplication::applicationDirPath(), QLatin1String("*.obj"));

次に、2番目のケースのスクリーンショットを取得します。

それでも、私が電話すると

QString path = QFileDialog::getOpenFileName(qobject_cast<QWidget*>(this->parent()), tr("Choose model"), QString(), QLatin1String("*.obj"));

次に、空でないフォルダを取得します(最初のケースのスクリーンショット)。

また、このヒントを使用して、ファイルの1行にコメントを付け~/.gtkrc-2.0、テーマをatambianceではなくに変更すると、アプリケーションに2番目のケースのスクリーンショットが表示されるようになりました。adwaitagnome-tweak-tool

このコードを使用してダイアログを表示します。

QString path = QFileDialog::getOpenFileName(qobject_cast<QWidget*>(this->parent()), tr("Choose model"), QCoreApplication::applicationDirPath(), QLatin1String("*.obj"));

ここでは、祖先thisを指します。これが私が作成するコードです:QGraphicsSceneOpenGLScene

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    GraphicsView view;
    view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
    view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
    view.setScene(new OpenGLScene);
    view.show();

    view.resize(1024, 768);

    return app.exec();
}
4

0 に答える 0