• 8882阅读
  • 7回复

关于定时器轮流显示的问题 [复制链接]

上一主题 下一主题
离线myth
 
只看楼主 倒序阅读 楼主  发表于: 2010-09-06
— 本帖被 XChinux 执行加亮操作(2010-09-06) —
我写了一个定时器来1秒循环显示数字1234 由按钮START来开始播放,然后按钮STOP可以停止显示,现在出现的问题是:第一次START,然后按下STOP之后,再按START ,就一直在2个数字徘徊显示,我看了2天也没发现逻辑问题,特地求教~~~
MAINWINDOW.CPP

QTimer *timer = new QTimer();   //定义定时器

void MainWindow::gotoshow()   //按了START,就开始1秒轮放数字1234
{

        if(pic_number == 1)
        {
          
            ui->label->setText(tr("1"));
          

        }
        if(pic_number == 2)
        {

            ui->label->setText(tr("2"));


        }
        if(pic_number == 3)
        {


            ui->label->setText(tr("3"));


        }
        if(pic_number == 4)
        {


            ui->label->setText(tr("4"));
            pic_number = 0;

        }
        pic_number++;

}


void MainWindow::on_pushButton_1_clicked()  //START 连接定时器的信号,槽,定时为1秒
{

    connect(timer,SIGNAL(timeout()),this,SLOT(gotoshow()));
    timer->start(1000);
    ui->pushButton->hide();   //这个可以忽略
}


void MainWindow::on_pushButton_2_clicked()  //STOP 关掉定时器 显示当前数字
{
    timer->stop();    
    ui->pushButton->show();  //这个可以忽略

}
离线myth
只看该作者 1楼 发表于: 2010-09-07
     我自己解决了,问题是在于STOP的槽,TIMER好像不能用STOP,用了DISCONNECT,把TIMER的信号槽关联给关掉,就实现我预想的功能了,不过现在又有个问题,我显示的图片,在别人的机子不能显示,我是将 .EXE和一些库放在别人的机子上运行,EXE能够运行,但是没有图片,我用的是QTCREATOR 4.7.0 图片在QRC,请问怎么加载..
离线dbzhang800

只看该作者 2楼 发表于: 2010-09-07
引用第1楼myth于2010-09-07 17:01发表的  :
     我自己解决了,问题是在于STOP的槽,TIMER好像不能用STOP,用了DISCONNECT,把TIMER的信号槽关联给关掉,就实现我预想的功能了,不过现在又有个问题,我显示的图片,在别人的机子不能显示,我是将 .EXE和一些库放在别人的机子上运行,EXE能够运行,但是没有图片,我用的是QTCREATOR 4.7.0 图片在QRC,请问怎么加载..

1. 你这样可以解决你的问题,但你的结论是错的。
   原因出在你吧 connect 放到了 button的槽中,按一次多连一次。这样一来,你的timer的槽,每次都执行多次(具体取决于你按你几次按钮),就像1,2连续执行,你显然看不1

正确的办法,connect 放到 构造函数中去

2.对发布我不想多说了(论坛中也讨论太多了),自己看吧 http://hi.baidu.com/cyclone/blog/item/d77a86182fb915b84bedbc57.html
离线myth
只看该作者 3楼 发表于: 2010-09-07
回 2楼(dbzhang800) 的帖子
我按照你给的帖子 设置 还是不能显示,我用的是QT4.7.0 图片是在QRC里的,":/new/prefix1/14.jpg"这是一个图片的位置,难道我要在发布的机子上按照这个地址来创建目录吗
离线dbzhang800

只看该作者 4楼 发表于: 2010-09-07
Re:回 2楼(dbzhang800) 的帖子
引用第3楼myth于2010-09-07 18:56发表的 回 2楼(dbzhang800) 的帖子 :
我按照你给的帖子 设置 还是不能显示,我用的是QT4.7.0 图片是在QRC里的,":/new/prefix1/14.jpg"这是一个图片的位置,难道我要在发布的机子上按照这个地址来创建目录吗

介绍你怎么设置的,不然我怎么相信你确实按我说的设置的呢?
离线myth
只看该作者 5楼 发表于: 2010-09-07
回 4楼(dbzhang800) 的帖子
我在发布的机子上 装好必须依赖的库,然后将把IMAGEFORMATS文件夹(里面有QGIF4.DLL)放入DEBUG目录下,把DEGUG目录全部放在发布的机子上,PNG可以显示,但是GIF不能,我现在碰到个很棘手的问题,编译程序会出现CC1PLUS这个进程占用率90%多,而且会出现 OUT OF MEMORY ALLOCATING 65536 BYTES
离线dbzhang800

只看该作者 6楼 发表于: 2010-09-07
Re:回 4楼(dbzhang800) 的帖子
引用第5楼myth于2010-09-07 20:15发表的 回 4楼(dbzhang800) 的帖子 :
我在发布的机子上 装好必须依赖的库,然后将把IMAGEFORMATS文件夹(里面有QGIF4.DLL)放入DEBUG目录下,把DEGUG目录全部放在发布的机子上,PNG可以显示,但是GIF不能,我现在碰到个很棘手的问题,编译程序会出现CC1PLUS这个进程占用率90%多,而且会出现 OUT OF MEMORY ALLOCATING 65536 BYTES

我上面说的第一步就是生成 release 版的程序 ^_^

当然如果你认为性能和体积都无所谓,可以发布debug的程序,只不过这时你需要的是 qgifd4.dll而不是qgif4.dll
离线myth
只看该作者 7楼 发表于: 2010-09-07
谢谢你的帮助 ^_^  我现在想生成RELEASE版的 但是我没有到设置IDE生成RELEASE版的程序 我的IDE是4.7.0 安装的时候只有IDE
快速回复
限100 字节
 
上一个 下一个