QEventDispatcherWin32::registerTimer: Failed to create a timer ()

    qt开发的界面程序,使用qwt显示曲线,每秒定时刷新,程序运行一段时间之后,程序会卡顿,再打开窗口会程序崩溃,运行vld查看内存泄漏情况,未发现有内存泄漏现象,但是程序就是运行卡顿,所以编译出debug版本,在cmd窗口下运行程序,长时间运行,发现崩溃的时候报的错误是QEventDispatcherWin32::registerTimer: Failed to create a timer (),网上查的是句柄超过限制,但是程序打开文件次数有限,不是重复打开。最后查了代码,原因是在定时刷新的操作里面,为了刷新报警信息,需要操作一个label,代码如下:

void updateAlarmTime()
{
	QString alarm_time_string;


	if (0 != m_AlarmTimePntRtValue)
	{
		alarm_time_string = "报警时间:" + alarm_time_string + QString::number(m_AlarmTimePntRtValue,10,4);
	}

    //因为不停的把一个label添加到工具栏中即addWidget(&m_AlarmTimeLabel),导致了错误
	m_AlarmTimeLabel.setStyleSheet(" QLabel{ color: red }");
	m_pToolBar->addWidget(&m_AlarmTimeLabel);
	m_AlarmTimeLabel.setText(alarm_time_string);
}

    应该在构造函数中,initUI的时候执行一次:

void initUI()
{
	m_AlarmTimeLabel.setStyleSheet(" QLabel{ color: red }");
	m_pToolBar->addWidget(&m_AlarmTimeLabel);
}

    在需要更新label的内容时候:

    m_AlarmTimeLabel.setText(alarm_time_string);

    在程序出现莫名其妙的崩溃的时候,最好打开cmd窗口去执行程序,能获取到更多的提示信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值