我怀疑是线程问题。如果timer是主线程中的对象,而readMyCom()是运行在子线程中,则start会为timer创建子对象。
在子线程中,给主线程中的对象创建子对象是不允许的。
这个原因是我猜测的,没有研究源代码。将timer->start()换成发个信号,在槽中再调用timer->start()。
connect(this, SIGNAL(sigStartTimer()), this, SLOT(slotStartTimer()) );
void MainWindow::readMyCom()
{
QString temp = myCom->readAll();
ui->dispData->insertPlainText(temp);
if(temp.compare("START") == 0)
{
emit sigStartTimer();
}
}
void MainWindow::slotStartTimer()
{
timer->start();
}
试一下这个还出不出错