C++ QFileDialog在加载项目后显示不好
我和我的朋友正在开发的软件中的QFileDialog有问题 该软件是一个用C++/Qt(5.6)编程的CAD软件,因此它使用了很多MVC设计模式。问题如下: 当我们要加载或保存项目时,我们使用QFileDialog -当我们启动软件并首次加载项目时,一切正常 -当我们再次尝试加载时,QFileDialog显示不好。它似乎没有冻结,唯一显示的部分(左侧的文件夹部分)会响应,但不会在中心显示任何文件。 我看到的唯一区别是,在第一次加载之后,QGraphicsItem被创建和更新,以便显示加载项目的各个部分。 你知道有什么问题吗 编辑-代码C++ QFileDialog在加载项目后显示不好,c++,qt,qfiledialog,C++,Qt,Qfiledialog,我和我的朋友正在开发的软件中的QFileDialog有问题 该软件是一个用C++/Qt(5.6)编程的CAD软件,因此它使用了很多MVC设计模式。问题如下: 当我们要加载或保存项目时,我们使用QFileDialog -当我们启动软件并首次加载项目时,一切正常 -当我们再次尝试加载时,QFileDialog显示不好。它似乎没有冻结,唯一显示的部分(左侧的文件夹部分)会响应,但不会在中心显示任何文件。 我看到的唯一区别是,在第一次加载之后,QGraphicsItem被创建和更新,以便显示加载项目
QFileDialog fileDialog(0,tr("Load Project"), "./..", tr("CAD files (*.json)"));
fileDialog.setAcceptMode(QFileDialog::AcceptOpen);
fileDialog.setFileMode(QFileDialog::ExistingFiles);
if (QDialog::Accepted != fileDialog.exec())
return NULL;
QStringList sel = fileDialog.selectedFiles();
编辑2-工作解决方案
通过强制Qt不使用本机对话框,我们可以正确显示窗口
fileDialog.setOption(QFileDialog::DontUseNativeDialog,true);
我们使用的是LinuxMint17.2,带有肉桂粉。你知道Qt和肉桂之间有什么冲突吗?可能是相对目录/路径有问题。尝试用其他东西替换它,例如
QDir::home().absolutePath()
Qt还可能与机器上安装的内容冲突,如@ElevenJune所述:
通过强制Qt不使用本机对话框,我们可以正确显示窗口
fileDialog.setOption(QFileDialog::DontUseNativeDialog,true);
这听起来像是一场冲突。。。您是否在应用程序中使用Qt以外的其他库?相对目录/路径可能有问题。尝试用其他东西替换它,例如
QDir::home().absolutePath()
Qt还可能与机器上安装的内容冲突,如@ElevenJune所述:
通过强制Qt不使用本机对话框,我们可以正确显示窗口
fileDialog.setOption(QFileDialog::DontUseNativeDialog,true);
这听起来像是一场冲突。。。您是否在应用程序中使用Qt以外的其他库?请在打开文件对话框的位置发布代码。对不起,我添加了代码我在Windows上。同样的问题也发生在我身上。但在我的例子中,问题只发生在QtCreator(4.5.0)中。我的意思是,当我使用运行或调试模式时,我会遇到类似的问题,但如果我将应用程序安装到计算机上,则不会发生任何错误。请在打开文件对话框的位置发布代码。抱歉,我添加了代码我在Windows上。同样的问题也发生在我身上。但在我的例子中,问题只发生在QtCreator(4.5.0)中。我的意思是,当我使用运行或调试模式时,我会遇到类似的问题,但如果我将应用程序安装到计算机上,则不会发生任何问题。@ElevenJune您是否尝试过在另一台计算机上运行它?或其他操作系统(如果可能)?Qt可能与机器上安装的某些内容冲突…可能是这样。当我们强制不使用本机对话框(见更新)时,它会工作。不,我只使用Qt@你试过在另一台机器上运行吗?或其他操作系统(如果可能)?Qt可能与机器上安装的某些内容冲突…可能是这样。当我们强制不使用本机对话框(见更新)时,它会工作。不,我只使用Qt!