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
-
kasunf 2014年12月15日 上午6:03
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
浏览
-
-
SGaist Lifetime Qt Champion 2014年12月15日 上午6:44
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 path
0
-
kasunf 2014年12月15日 上午6:57
Yes, this is just an example syntax for this post.
My syntax is as follows:fileName = QFileDialog::getOpenFileName(this,
0
tr("Select file"),
QString(),
tr("Files (*.cvs *.svf *.txt)"));
-
SGaist Lifetime Qt Champion 2014年12月15日 上午7:13
Do you have any network drive ?
0 -
-
kasunf 2014年12月15日 上午7:17
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
-
SGaist Lifetime Qt Champion 2014年12月16日 上午5:29
Which version of Windows ?
0 -
-
kasunf 2014年12月16日 上午5:45
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
-
htettey 2015年5月18日 上午6:19
-
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); //works
m_imageFile = QFileDialog::getOpenFileName(this, tr("Open Image"), QDir::homePath(), tr("Image Files (*.png *.jpg *.bmp)")); //does not work
Program 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
-
SGaist Lifetime Qt Champion 2015年5月20日 上午5:44
Do you mean that when you click OK the dialog disappear but your application doesn't do anything ?
0 -
-
htettey 2015年5月20日 下午2:38
-
@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 to
QFileDialog::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
-
SGaist Lifetime Qt Champion 2015年5月29日 上午5:20
Which compiler are you using ? Just tested with VS2013 on Win 8 and no problem with the dialog.
0
-
GirishJ 2015年8月18日 下午7:02
Facing exactly same problem on Windows 7 pro (64-bit) with Qt5.5 MSVS2010 Professional with Qt Add-in.
0
-
mrjj Lifetime Qt Champion 2015年8月18日 下午8:02
win 7. 64 bit, Qt 5.5, "gcc"
No hanging at all.
So maybe only VS?Please Try with QFileDialog::DontUseCustomDirectoryIcons
1
As i had case where it would take ages due to subversion overlay icons.
-
Rondog 2015年8月18日 下午8:43
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
-
Wesley 2015年11月5日 下午6:33
-
@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
-
dan-42 2019年4月26日 下午5:03
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
-
Gwen5484 2019年8月30日 上午12:05
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
-
JonB 2019年8月30日 上午12:57
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
帖子 10.5k
浏览
标签:SGaist,getOpenFileName,Qt,hangs,QFileDialog,dialog,problem 来源: https://www.cnblogs.com/liujx2019/p/11736854.html