今天,用Qt在做一个多线程程序的时候,遇到了一点小障碍。这个程序的功能是这样的,打开文件夹选择对话框,选择多个txt文件。然后后台对这多个txt文件写入“hello world”,当写好一个文件时GUI上显示写好文件的名称。

 关于Qt中的对话框无缘无故弹出两次的问题_多线程

 程序做完看似很好的样子,可是每次在选择完文件点击“打开”后选择文件的对话框又会弹出来。搞了好久没有解决这个问题,终于刚刚我知道怎么回事了。在这里为自己做个笔记,有需要的也可以看看。

 小小的回忆下自己做这个工程的过程,首先建立工程文件,然后进入QtDesigner做界面,之后就是写槽函数了。我所使用的写槽函数的方法如下图所示。关于Qt中的对话框无缘无故弹出两次的问题_多线程_02

 然后就是敲代码的过程了,等代码都敲好了之后我又在Diglog的构造函数中加了连接槽函数的语句:

    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));

 看似天衣无缝的操作过程,编译阶段也没有报错。程序运行基本正常,除了选择文件对话框会弹出两次之外。然后就是一个上午都在调这个问题,找资料看帖子。最后终于明白问题出在哪里了,我们用“转到槽”的方法建立槽函数时Qt已经将我们的连接做好了而我又在构造函数中对槽函数进行了连接,所以导致槽函数执行了两次。

 需要看代码的话,我放在了附件里。