QFileDialog::getOpenFileName() hangs
https://forum.qt.io/topic/49209/qfiledialog-getopenfilename-hangs-in-windows-when-using-the-native-dialog/18
QFileDialog::getOpenFileName() hangs in Windows when using the native dialog
-
Hi,
I'm using QT 5.3.1 and I noticed that my program hangs in Windows 7 (64bit) with following arguments to the function.
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"/home",
tr("Images (*.png *.xpm *.jpg)"));However, if I use the option QFileDialog::DontUseNativeDialog, then
it won't hang and will show the non-native file open dialog. I would
prefer to use the native windows dialog so can anyone tell me if this is
a bug or not?0
18
帖子10.5k
浏览
-
Hi and welcome to devnet,
Strange but are you aware that you are trying to open a probably non
existent folder ? There's no /home on windows. However you can use
QDir::home() to get the current user home path0
-
Yes, this is just an example syntax for this post.
My syntax is as follows:fileName = QFileDialog::getOpenFileName(this,
tr("Select file"),
QString(),
tr("Files (*.cvs *.svf *.txt)"));0
-
Do you have any network drive ?
0
-
No I don't. I just have a C:\ drive and couple of removable drives, which are not active.
This problem was reproduced on another PC other than mine.[quote author="SGaist" date="1418598787"]Do you have any network drive ?[/quote]
0
-
Which version of Windows ?
0
-
It is Windows 7 Professional (64bit).
Looking at the history of Qt, I think this possibly has been a bug for some time (possibly since QT4)....
I have seen at least 1 reported case of this sort of behaviour....[quote author="SGaist" date="1418678949"]Which version of Windows ?[/quote]
0
I have just recently migrated a project I am working on to Qt5.4.1
from Qt4.8.5, and I am having the same problem as reported by kasunf.A call to getOpenFileName hangs - using
QFileDialog::DontUseNativeDialog gets it working, but I'll prefer to use
te native windows dialog. The code snippet is shown below:m_imageFile = QFileDialog::getOpenFileName(this, tr("Open Image"),
QDir::homePath(), tr("Image Files (*.png *.jpg *.bmp)"), 0,
QFileDialog::DontUseNativeDialog); //worksm_imageFile = QFileDialog::getOpenFileName(this, tr("Open Image"),
QDir::homePath(), tr("Image Files (*.png *.jpg *.bmp)")); //does not
workProgram control does not seem to return from this function call. Has
this issue been resolved? My system specifications are as follows:Windows7 64bit
Visual Studio 2010
Qt5.4.1_openglPS: I did not have this problem with Qt4.8.5
Thanks,
0
-
Do you mean that when you click OK the dialog disappear but your application doesn't do anything ?
0
@SGaist Nope, that is not what I mean.
The open fIle dialog does not appear at all - as though my
application is waiting for it to appear. After investigations it turns
out that it seems to hang in the call toQFileDialog::getOpenFileName(...)
As I indicated, a call to QFileDialog::getOpenFileName(...) using the
flag QFileDialog::DontUseNativeDialog returns from the function call,
but the same function call without using the flag does not return.I will like to use it without the flag. Also, I didn't have this problem in Qt4.8.5.
Please this is the same problem as first reported on this post. I just need to know what the status of this issue is.
PS: I am interested in purchasing a commercial license for Qt5, but I
need to make sure that my project works in Qt5 before going ahead with
the purchase.Thanks,
0
-
Which compiler are you using ? Just tested with VS2013 on Win 8 and no problem with the dialog.
0
-
Facing exactly same problem on Windows 7 pro (64-bit) with Qt5.5 MSVS2010 Professional with Qt Add-in.
0
-
win 7. 64 bit, Qt 5.5, "gcc"
No hanging at all.
So maybe only VS?Please Try with QFileDialog::DontUseCustomDirectoryIcons
As i had case where it would take ages due to subversion overlay icons.1
-
I have used most of the Qt versions mentioned in this thread and
never had a problem with using the getOpenFileName(...) member function
with native dialogs. I have always used MinGW for Windows so maybe this
problem is unique to Visual Studio?0
@SGaist said:
Do you have any network drive ?
I have a problem using the functions QFileDialog::getSaveFileName and
QFileDialog::getOpenFileName on a PC with many network drives. Could
you please help on this? Thanks.0
-
Just to note this issue still exists, but does not happen on all QFileDialogs instances used in our software.
When does it work:
On the very first start-screen, when no other backend-threads are running, no COM connection is created etc.
When does it not work
Some where later in the application, when backend-threads are running, COM connection to a different application is established.
Setup:
Qt 5.12.3
MSVC 2017 v15.9.7
Windows 10 build1809The issue is reproducible on different computers in Debug and Release Build
Observations
Opening The QFileDialog leads to the following:
The Main-UI is blocked and you can hear the windows-sound that comes,
when the UI is blocked because a Dialog is in front and the user clicks
somewhere on the Main-UI.Then
Switching between applications (Alt-Tab) then hitting ESC, and the Main-UI is responsible again.
This indicates, that there is an invisible Dialog on top of the main-UI.Opening The QFileDialog again
Then it works!
3
-
Same symptoms here, with QFileDialog::getExistingDirectory.
- Before loading the COM objets, the dialog opens well, with native window.
- After laoding COM (CoInitializeEx), calling getExistingDirectory causes the program to hang.
- After disconnecting COM (CoUninitialize), the dialog opens well again, but with Qt window (not native) even though I did'nt specify the DontUseNativeDialog option!
Qt 5.12.1, MSVC 2017, Windows 10
0
-
Clearly nasty COM behaviour. I am not a Qt expert, but since your
post and the previous one are nice and clear on the reproducibility, the
best would be to (search first and then) report them at https://bugreports.qt.io/secure/Dashboard.jspa, see also https://wiki.qt.io/Reporting_Bugs.1
帖子
浏览
QFileDialog::getOpenFileName() hangs的更多相关文章
- Qt 打开文件的默认路径 QFileDialog::getOpenFileName()
为了说明QFileDialog::getOpenFileName()函数的用法,还是先把函数签名放在这里: QString QFileDialog::getOpenFileName ( ...
- QT中用QStettings生成INI文件来记录QFileDialog::getOpenFileName上次的打开路径
QSettings setting("./Setting.ini", QSettings::IniFormat); //QSettings能记录一些程序中的信息,下次再打开时可以读 ...
- QT 文件对话框(QFileDialog)
1.选择文件(上传.打开...) QString QFileDialog::getOpenFileName( QWidget *parent = , //parent,用于指定父组件.注意,很多Qt组 ...
- QDialog, QFileDialog 和 QDesktopServices 的使用方法
Qt中的QDialog类是用来生成对话框的类,QFileDialog 类是QDialog的衍生类,主要用来生成打开文件,或是打开文件目录的对话框,或者是保存文件的对话框,下面我们一一来看代码: 1. ...
- Obj-C 实现 QFileDialog函数
Obj-C 实现 QFileDialog函数(getOpenFileName/getOpenFileNames/getExistingDirectory/getSaveFileName) 1.getO ...
- (六)QDialog,QMessageBox,QFileDialog,QColorDialog颜色,QFontDialog字体
QDialog 对话框: 1.模态对话框: QDialog dlg(this); // 显示模态对话框 exec ,后面的不可操作 dlg.exec(); // 阻塞 2.非模态对话框: QDialo ...
- 六、pyqt5对话框——QInputDialog、QColorDialog、QFontDialog、QMessageBox、QFileDialog
目录: 一.对话框综合示例 二.QDialog 三.QInputDialog 四.QMessageDialog 五.QFileDialog pyqt5的对话框有多种类型,比如输入对话框(QInput ...
- Qt ------ QFileDialog
QString strFile = QFileDialog::getOpenFileName(this,QStringLiteral("选择Excel文件"),"&quo ...
- Qt__文件打开保存对话框(QFileDialog)
转自豆子空间 使用QFileDialog有两种方法,一种是比较简单的使用"静态函数法",另一种是可以自定义各个细节的"构造函数法". 静态函数法 修改MainW ...
随机推荐
- 【cs224w】Lecture 1 & 2 - 图的性质 及 随机图
目录 Lecture 1: Introduction Lecture 2: Properties and Random Graph Degree Distribution Path Length Cl ...
- SVN同步代码问题集锦
1.删除文件后file missing警告 相关链接: http://blog.sina.com.cn/s/blog_63e26d560100ve00.htm ...
- 在函数中修改全局变量的值,需要加global关键字
一.引用 使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字.如: #! /usr/bin/python a = 1 b = [2, 3] def func(): if ...
- 编写SpringBoot 中的AOP
编写SpringBoot 中的AOP 在程序开发的过程中会使用到AOP的思想,面向切面进行开发,比如登录的验证,记录日志等等-频繁需要操作的步骤,在遇到这种情况时就要使用Spring 的AOP了 Sp ...
- 10年阿里自动化测试架构师帮您收集的:git常用命令大全以及git原理图【泣血推荐,建议收藏】
一.Git分布式版本控制简介 Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势.本来想着只把最有用.最常用的 Git 命令记下来, ...
- js中使用Timer来计时程序执行时 - [javascript] - [开发]
在我们开发过程中,我们也在不断的学习,以及优化自己的代码质量. 我们时常需要一个计时器,来对代码某段或者某些段执行进行计时,以评估代码运行质量,考虑是否优化. 以及优化后的直观对比. JavaScri ...
- 判断移动端还是PC端JS
if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { // alert("手机&qu ...
- 2017蓝桥杯兴趣小组(C++C组)
原题:兴趣小组 为丰富同学们的业余文化生活,某高校学生会创办了3个兴趣小组(以下称A组,B组,C组).每个小组的学生名单分别在[A.txt],[B.txt]和[C.txt]中.每个文件中存储的是学生的 ...
- 9.2ArrayList 集合 案例,学生管理系统
循环的使用 添加学生:while嵌套for,for设置变量,内嵌if更新变量.if语句判断变量值 修改学生:for循环内嵌if,获取循环中的某个值. package day9_ArrayList.AL ...
- Oracle--pl/sql编程-分支语句(判断、循环)
if语句 oracle: elsif java: else if if (条件) then pl/sql或sql语句 [elsif (条件) then ] ...可以有多个elsif [el ...