繁体   English   中英

QFileDialog在关闭/析构函数上冻结(带有选定文件或取消)

[英]QFileDialog freezes on close/destructor (with selected file or cancel)

我正在使用Ubuntu 15.04和相应的qt pakage 5.4在qt中开发应用程序。 由于某种原因,在QFileDialog选择一个文件后(甚至取消),应用程序将无处死机。

我在网络上找到了一些类似的主题,但是大多数都与qt 5.1和(非)本地QFileDialog s中现已解决的错误有关。

然后,我发现这不仅与我自己的应用程序有关-甚至qtcreator现在离开QFileDialog也会冻结。

QFileDialog的析构函数中似乎存在死锁。

以下代码段来自qsettings.cpp (第1382行),位于void QConfFileSettingsPrivate::syncConfFile(int confFileNo)

QLockFile lockFile(confFile->name + QLatin1String(".lock"));
if (!readOnly) {
    if (!confFile->isWritable() || !lockFile.lock() ) {
        setStatus(QSettings::AccessError);
        return;
    }
}

事实证明,其他一些qt应用程序留下了一个锁定文件,这导致所有其他应用程序的QFileDialog析构函数在上述lock调用中被死锁。

我搜索了我的主文件夹中的.lock文件,并删除了./.config/QtProject.conf.lock和第二个类似于.config/USERNAME/APPTARGETNAME.conf.lock的文件后,QFileDialog很好用了。

我现在无法重现两个文件中的哪个确实导致了死锁。

希望这对遇到类似情况的人有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM