Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QFileDialog在加载项目后显示不好_C++_Qt_Qfiledialog - Fatal编程技术网

C++ QFileDialog在加载项目后显示不好

C++ QFileDialog在加载项目后显示不好,c++,qt,qfiledialog,C++,Qt,Qfiledialog,我和我的朋友正在开发的软件中的QFileDialog有问题 该软件是一个用C++/Qt(5.6)编程的CAD软件,因此它使用了很多MVC设计模式。问题如下: 当我们要加载或保存项目时,我们使用QFileDialog -当我们启动软件并首次加载项目时,一切正常 -当我们再次尝试加载时,QFileDialog显示不好。它似乎没有冻结,唯一显示的部分(左侧的文件夹部分)会响应,但不会在中心显示任何文件。 我看到的唯一区别是,在第一次加载之后,QGraphicsItem被创建和更新,以便显示加载项目

我和我的朋友正在开发的软件中的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!