Я пытаюсь получить путь к файлу в моем проекте 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
в gnome-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();
}
Задача ещё не решена.
Других решений пока нет …