• 5865阅读
  • 7回复

[提问]按键响应堵塞,如何实现,具体如下 [复制链接]

上一主题 下一主题
离线zyc52351484
 
只看楼主 倒序阅读 楼主  发表于: 2012-05-15
关键词: 求助紧急求助
窗口有几个按键,每个按键都是一个死循环,必须执行特定的流程才会跳出,否则会一直做循环,我加入了processEvents,但是如果在不做特定执行的情况下,连续点击两个按键,就会出现段错误(吐核),正常操作不会出现,请高手指点
代码如下:
void Widget::qt_sleep(int ms)
{
    QTime t;

    t.start();
    while (t.elapsed() < ms)
    {
        QCoreApplication::processEvents();
    }
}
int WIdget::on_file1_clicked()
{
    ...
    ...
    while(1)
     {
          qt_sleep(200);
           if(一个判断,如果满足条件,进入if里面){ }
      }
}
int WIdget::on_file2_clicked()
{
    ...
    ...
    while(1)
     {
          qt_sleep(200);
           if(一个判断,如果满足条件,进入if里面){ }
      }
}
int WIdget::on_file3_clicked()
{
    ...
    ...
    while(1)
     {
          qt_sleep(200);
           if(一个判断,如果满足条件,进入if里面){ }
      }
}
我连续轮流点击两个按钮,并不进入if里面的操作,在点击十几次后,就会出现短错误(吐核),求解

离线benbenmajia

只看该作者 1楼 发表于: 2012-05-15
你不发代码让我凭空想象么?
安然.....
离线passion_wu
只看该作者 2楼 发表于: 2012-05-16
你后一次按键的时候做个判断不就可以了么,如果上一次按键还没响应结束就不做操作啊。
离线jdwx

只看该作者 3楼 发表于: 2012-05-16
把按键顺序记录下来做比较不就成了,干嘛弄个死循环,占用CPU,难道回到了DOS时代。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线zyc52351484
只看该作者 4楼 发表于: 2012-05-16
回 3楼(jdwx) 的帖子
因为要完成特定的功能,正常操作没问题的,执行完if里面的就会跳出循环,就相当于点击了按键,界面在等待用户操作一样,但是不正常操作,轮流点击两个按键十几次就会出现段错误,请问知道是什么原因吗
离线jdwx

只看该作者 5楼 发表于: 2012-05-16
光这么说,谁也不会知道问题在哪,你自己写的代码,不是也不知道,我们更不知道。
想让大家帮忙,怎么也要有个能运行的例子。
本人估计问题在这里:processEvent
这个函数会中断当时的工作,开始其它的函数,原来的函数不等全部完成就中断了。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线zyc52351484
只看该作者 6楼 发表于: 2012-05-16
回 5楼(jdwx) 的帖子
那请问除了使用QCoreApplication::processEvents();这个来避免界面无法响应,还有其他的办法吗
离线jdwx

只看该作者 7楼 发表于: 2012-05-16
多线程,那就更麻烦了,建议想个其它的办法。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个