今天在写代码的时候,遇到了一个小问题,之前没注意到这个细节,今天发现了,把他记下来分享给大家。
是主线程中,启用了一个工作线程来刷新界面,通过工作线程发信号给主线程,主线程定义了槽函数来刷新界面。
因为编程习惯的问题,个人喜欢将信号和槽的连接,放到构造函数里。就是这个地方,导致了刷新问题。
因为工作线程的初始化,是在主线程中按钮点击之后初始化的,在构造函数之后,也就是在工作线程的信号和主线程的槽函数关联之后,导致工作线程发出的信号,主线程没收到。
这里要切记,工作线程相关的东西,一定要在工作线程初始化之后,再来做关联。
m_rfcalThread = new RFCalWorkThread;
connect(m_rfcalThread, &RFCalWorkThread::isDone, this, &RFCalWidget::receiveThreadIsDoneMessageSlot);
connect(m_rfcalThread, &RFCalWorkThread::sendMessage,this, &RFCalWidget::receiveThreadMessageSlot);
connect(m_rfcalThread, &RFCalWorkThread::isQuit, this, &RFCalWidget::quitThreadSlot);
connect(m_rfcalThread, &RFCalWorkThread::isFinish, this, &RFCalWidget::finishedThreadSlot);