3

我正在尝试在我的 Qt 项目中获取文件路径。当我使用 KDE4 和 Qt 4.8 时一切正常,但现在我更新到 Qt 5 和 Gnome 3。QFileDialog现在看起来像这样:

在此处输入图像描述

甚至像这样:

在此处输入图像描述

但更多时候它看起来像这样:

在此处输入图像描述

我注意到行为的变化取决于作为对话框的初始路径传递的路径。例如,如果我打电话

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

然后我得到第二个案例截图。

然而,如果我打电话

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

然后我得到任何空的文件夹,而它不是(第一个案例截图)。

此外,使用这个提示,我管理在我的文件中注释一行~/.gtkrc-2.0并将主题更改为ambiance而不是adwaitaatgnome-tweak-tool使我的应用程序显示第二种情况的屏幕截图。

我使用此代码显示对话框:

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

这里,this指向QGraphicsScene祖先,OpenGLScene。这是我创建的代码:

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