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 path

    0


  • 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


  •  

    @SGaist

    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_opengl

    PS: 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 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


  • 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 build1809

    The 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


 
 
18
帖子
10.5k
浏览


QFileDialog::getOpenFileName() hangs的更多相关文章

  1. Qt 打开文件的默认路径 QFileDialog::getOpenFileName()

    为了说明QFileDialog::getOpenFileName()函数的用法,还是先把函数签名放在这里:   QString QFileDialog::getOpenFileName (       ...

  2. QT中用QStettings生成INI文件来记录QFileDialog::getOpenFileName上次的打开路径

    QSettings setting("./Setting.ini", QSettings::IniFormat); //QSettings能记录一些程序中的信息,下次再打开时可以读 ...

  3. QT 文件对话框(QFileDialog)

    1.选择文件(上传.打开...) QString QFileDialog::getOpenFileName( QWidget *parent = , //parent,用于指定父组件.注意,很多Qt组 ...

  4. QDialog, QFileDialog 和 QDesktopServices 的使用方法

    Qt中的QDialog类是用来生成对话框的类,QFileDialog 类是QDialog的衍生类,主要用来生成打开文件,或是打开文件目录的对话框,或者是保存文件的对话框,下面我们一一来看代码: 1. ...

  5. Obj-C 实现 QFileDialog函数

    Obj-C 实现 QFileDialog函数(getOpenFileName/getOpenFileNames/getExistingDirectory/getSaveFileName) 1.getO ...

  6. (六)QDialog,QMessageBox,QFileDialog,QColorDialog颜色,QFontDialog字体

    QDialog 对话框: 1.模态对话框: QDialog dlg(this); // 显示模态对话框 exec ,后面的不可操作 dlg.exec(); // 阻塞 2.非模态对话框: QDialo ...

  7. 六、pyqt5对话框——QInputDialog、QColorDialog、QFontDialog、QMessageBox、QFileDialog

    目录:  一.对话框综合示例 二.QDialog 三.QInputDialog 四.QMessageDialog 五.QFileDialog pyqt5的对话框有多种类型,比如输入对话框(QInput ...

  8. Qt ------ QFileDialog

    QString strFile = QFileDialog::getOpenFileName(this,QStringLiteral("选择Excel文件"),"&quo ...

  9. Qt__文件打开保存对话框(QFileDialog)

    转自豆子空间 使用QFileDialog有两种方法,一种是比较简单的使用"静态函数法",另一种是可以自定义各个细节的"构造函数法". 静态函数法 修改MainW ...

随机推荐

  1. Activiti任务分配

    分配任务负责人 一.固定分配 在进行业务流程建模时指定固定的任务负责人 在properties 视图中,填写Assignee 项为任务负责人. 注意: 由于固定分配方式,任务只管一步一步执行任务,执行 ...

  2. 基于 HTML5 WebGL 的楼宇智能化集成系统(二)

    前言       一套完整的可视化操作交互上,必不可少 2D/3D 的融合,在上期我们介绍了有关 3D 场景的环视漫游.巡视漫游以及动画效果,还包括了冷站场景.热站场景以及智慧末端的实现原理,本期主要 ...

  3. SWUST OJ 1075 求最小生成树(Prim算法)

    求最小生成树(Prim算法) 我对提示代码做了简要分析,提示代码大致写了以下几个内容 给了几个基础的工具,邻接表记录图的一个的结构体,记录Prim算法中最近的边的结构体,记录目标边的结构体(始末点,值 ...

  4. findbugs过滤R.java文件

    在第一次使用findbugs时检查出100多个Bad pratice,仔细一看原来全是R文件里面的类名首字母没有大写导致的. 于是只有自己在findbugs设置界面中添加过滤条件来忽略掉R文件. 在F ...

  5. 【电商】性能测试网站搭建:XAMPP1.8+DBShop1.3

    1.安装准备 1.1软件版本 XAMPP的版本:XAMPP 1.8.2 DBShop的版本:DBShop 1.3   1.2.安装环境 我的环境:win10 win7,win10都可以运行的,安装步骤 ...

  6. 关于json语句的相关用法

    json语句: JSON 值可以是: 数字(整数或浮点数)字符串(在双引号中)逻辑值(true 或 false)数组(在中括号中)对象(在大括号中)null 对于json的的对象数组:var site ...

  7. ubuntu安装fastdfds

    ubuntu安装fastdfds 安装fastdfds依赖 cd   /user/local       wget https://github.com/happyfish100/libfastcom ...

  8. Linux服务器架设篇,DNS服务器(三),正反解区域的配置

    一.大体架构 DNS服务器其实只有一个"真正"的配置文件,即 /etc/named.conf .其他的配置文件都是依据此配置展开的.每个域都需要两个配置文件,即正解文件和反解文件. ...

  9. 插入排序(C语言版)

    #include<iostream>using namespace std;int n;void lan(int a[],int size){ for(int i = 0;i < s ...

  10. javascript入门 之 zTree(十二 托拽事件(二))

    1.逻辑可能有不完善的地方,如果发现,请指出. <!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - d ...