[英]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.