UI的函数fun1(),是通过线程函数 nthread() 实例化后调用的。
结果:导至主线程函数 fun1()中 输出到文本框的内容,都不显示,只能qDebut()显示;
然后,在fun1()中通过 信号 ,启动其他函数fun2(),也不行,fun2() 也不在主线程中……
如何处理这种情况,让消息在文本框显示?
//-----------------------------
函数 sacMainWindow:: fun1() //该函数由线程 函数调用。 sacMainWindow *p = new sacmainwindw; p->fun1();
{
prnMsg("",false);
prnTxt("",true);
}
void sacMainWindow::prnMsg(QString qSrcStr)
{
//ui->plainTextEdit_info ->appendPlainText(qSrcStr);
//ui->plainTextEdit_txt->appendPlainText(qSrcStr);
emit prnMsgSignal(qSrcStr, false);
qDebug() << "PrnMsg thread:" << QThread::currentThreadId();
}
void sacMainWindow::prnTxt(QString qSrcStr)
{
//ui->plainTextEdit_txt->clear();
//ui->plainTextEdit_txt->appendPlainText(qSrcStr);
emit prnMsgSignal(qSrcStr, true);
}
void sacMainWindow::prnMsgSlotFun(QString qSrcStr, bool cls)
{
if(cls)
{
ui->plainTextEdit_txt->clear();
ui->plainTextEdit_txt->appendPlainText(qSrcStr);
qDebug() << "清屏消息." << qSrcStr;
}
else
{
ui->plainTextEdit_info ->appendPlainText(qSrcStr);
ui->plainTextEdit_txt->appendPlainText(qSrcStr);
qDebug() << "屏幕消息输出." << qSrcStr;
}
emit viewMsgSignal(qSrcStr, cls);
}
void sacMainWindow::viewMsgSlotFun(QString qSrcStr, bool cls)
{
if(cls)
{
ui->plainTextEdit_txt->clear();
ui->plainTextEdit_txt->appendPlainText(qSrcStr);
qDebug() << "清屏消息2." << qSrcStr;
}
}