因为我也遇到了同样的问题,我的理解是这样的:
在调用该控件的时候,我们自己new了一个filedialog,但是楼主提供的程序里面也有new一个filedialog。举个例子如下:
/*************************************************
Function: getOpenFileName()
Description: 返回打开文件名
Calls: selectedFile()
Input: 无
Output: 无
Return: 目录
*************************************************/
QString FileDialog::getOpenFileName( const char *dirName, const char *filter, QWidget *parent, const char *name )
{
FileDialog *dlg = new FileDialog( dirName, filter, parent, name, TRUE ); //这里创建了一个filedialog。
CHECK_PTR( dlg );
dlg->setCaption( "Open" );
QString result;
if (dlg->exec() == QDialog::Accepted)
{
result = dlg->selectedFile();
}
delete dlg;
return result;
}
因此,解决方法就是:我们不需要自己new一个filedialog。而是直接在“打开”按钮对应的slot函数里面调用该函数即可,这样就不会跳出来两次了。