当前位置:编程学习 > wap >>

求助:定时器刷新控件的问题

在一个界面面有一个label,label的内容随时更新,我就用了一个定时 ,每隔3秒就设定一下label内容。但是在此同时,我还会点击按钮或者操作其他控件, 可是我用鼠标点一下其他空间,界面就死了。 定时的时间如果长一点的话就不会死。这是为什么?怎么解决啊?请求大神指点. --------------------编程问答-------------------- 单从你的问题描述,我觉得还可能有别的问题。 为什么要用定时器更新?需要更新的时候 发个信号不好吗? --------------------编程问答--------------------
引用 1 楼 dext 的回复:
单从你的问题描述,我觉得还可能有别的问题。 为什么要用定时器更新?需要更新的时候 发个信号不好吗?


    m_timer = new QTimer(this);
    connect(m_timer,SIGNAL(timeout()),this,SLOT(timerUpDate()));
    m_timer->start(3000);
 timerUpDate就是设定label文本的方法, 这样有问题吗?
--------------------编程问答-------------------- 估计是有其它的问题。 --------------------编程问答-------------------- 你代码没有给全,具体我想了解下你的timerUpDate的方法.正好我手里有这个模块的代码,给你看下我的:

下面是声明定时器的:
//定义一个timer
    QTimer *timer = new QTimer(this);
    //timer的timeout触发update事件
    connect(timer, SIGNAL(timeout()), this, SLOT(timeshowslot()));
    //计时开始1000毫秒 = 1秒
    timer->setInterval(60000);
    //启动定时器
    timer->start();

=======================================
下面是更新时间的方法,也就是timeshowslot()函数:
//时间走动
void mainwindow::timeshowslot() {
    //获取当前时间
    QDateTime time = QDateTime::currentDateTime();
    //设置lable当前时间,timelabel是表示时间的标签
    ui->timelabel->setText("<font color='white' size='3'>"+time.toString("yyyy-MM-dd hh:mm:ss")+"</font>");
}


你可以参考下我的,希望你可以早点解决你的问题,谢谢!记得问题解决了结贴哈,嘿嘿. --------------------编程问答-------------------- 哦,对了,还有部分代码忘记给你贴,一定要声明timeshowslot为槽函数:
private slots:
    /*the time show of main window*/
    void timeshowslot();

引用 楼主 lisixiuhe 的回复:
在一个界面面有一个label,label的内容随时更新,我就用了一个定时 ,每隔3秒就设定一下label内容。但是在此同时,我还会点击按钮或者操作其他控件, 可是我用鼠标点一下其他空间,界面就死了。 定时的时间如果长一点的话就不会死。这是为什么?怎么解决啊?请求大神指点.
--------------------编程问答--------------------
引用 5 楼 yuan8222 的回复:
哦,对了,还有部分代码忘记给你贴,一定要声明timeshowslot为槽函数:


C/C++ code
?



123

private slots:     /*the time show of main window*/    void timeshowslot();
引用 楼主 lisixiuhe 的回复:
在一个界面面有一个label,label的内容随时更新,……
   
    char revText[256] = {0};
    m_pserver->rev(revText);//这里是socket通信server端接收消息的代码,将接收到的字符串显示到label上
    string revStr(revText);
    if (m_revStr != revStr)//和上一次收到的字符串比较,不相同则设定字符串到label上
    {
        m_revStr = revStr;
        ui->revmsg_text->setText(QString::fromStdString(revStr));//revmsg_text(QLabel)
    }
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,