主题 : 关于QFileDialog,需要这个请进 复制链接 | 浏览器收藏 | 打印
创新改变世界,技术驱动中国
级别: 论坛版主
UID: 7752
精华: 2
发帖: 55
金钱: 570 两
威望: 276 点
贡献值: 20 点
综合积分: 150 分
注册时间: 2009-07-27
最后登录: 2010-03-30
楼主  发表于: 2009-12-18 08:24

 关于QFileDialog,需要这个请进

之前看到有人问这个QFileDialog,因为在QTE中不支持QFileDialog,所以不能使用,其实这个问题并不大,自己改写一个就是了,我找了一个老外写的,然后改写了一个QFileDialog,但是外观尺寸我没有改,如有需要可以下载,并希望给点宝贵意见,谢谢
附件: filedialog.rar (4 K) 下载次数:261
级别: 侠客
UID: 5706
精华: 0
发帖: 119
金钱: 780 两
威望: 406 点
贡献值: 0 点
综合积分: 238 分
注册时间: 2009-05-05
最后登录: 2011-05-22
1楼  发表于: 2010-03-26 15:43
版主,这个怎么用?我不会。。。
级别: 侠客
UID: 5706
精华: 0
发帖: 119
金钱: 780 两
威望: 406 点
贡献值: 0 点
综合积分: 238 分
注册时间: 2009-05-05
最后登录: 2011-05-22
2楼  发表于: 2010-05-04 17:00

 回 1楼(381762390) 的帖子

因为我也遇到了同样的问题,我的理解是这样的:
在调用该控件的时候,我们自己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函数里面调用该函数即可,这样就不会跳出来两次了。