• 7265阅读
  • 5回复

关于无模式对话框? [复制链接]

上一主题 下一主题
离线yleesun
 

只看楼主 倒序阅读 楼主  发表于: 2009-01-19
— 本帖被 XChinux 执行加亮操作(2009-01-19) —
我在主线程的某一函数中创建并显示一个无模式的对话框,在这个对话框上显示一个gif图片。程序下面的部分比较耗时,这时这个现实gif的对话框就不动了,好像死了一样。
如何可以使单独启动的对话框脱离主线程的影响呢?代码如下:

void setmodle()
{
    m_probar = new processbar(this,"images/05043110.gif");
    m_probar->show();        //显示对话框,
     
        //下面部分加载数据,比较耗时...,执行到 这,上面调用的对话框就不动了
        ...

      m_probar->close();
    delete m_probar;
}
没有办法,能让启动的对话框,不受下面加载数据的影响?
离线wvins
只看该作者 1楼 发表于: 2009-01-19
换个思路
把数据加载放到线程中

你的想法真奇怪
离线yleesun

只看该作者 2楼 发表于: 2009-01-19
数据放到单独的线程中也试过了,在加载数据线程退出之前,主线程中启动的对话框还是处于死了的状态。
离线xjcook

只看该作者 3楼 发表于: 2009-01-19
qt自身带的那个进度对话框可以在你进程阻塞的时候刷新
如果你需要一幅图片啥的其他东西,可以用QSplashScreen。

另外,你说的“数据放到单独的线程中也试过了,在加载数据线程退出之前,主线程中启动的对话框还是处于死了的状态。”
我不知道是咋弄的,但是不应该这样。
如果你把你数据处理部分放到RUN函数里的话,start函数应该马上返回了,不会影响到后面的。
离线yleesun

只看该作者 4楼 发表于: 2009-01-19
由于无法计算加载数据需要的具体时间,所以就没有用QT自己的进度实现,而是用一个GIF图片代替。
离线wd007

只看该作者 5楼 发表于: 2009-01-19
不太清楚,你这个对话框是手写的还是在Qt Designer中写的,属性设置为 NonModal了吗
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
快速回复
限100 字节
 
上一个 下一个