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