我正在尝试在我的 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
而不是adwaita
atgnome-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();
}