程序的基本调用流程是,在一个业务处理线程中,通过调用QTextEdit::append()
方法输出提示信息,从而引发程序崩溃。
程序运行时的错误提示如下:
QObject::connect: Cannot queue arguments of type 'QTextCursor'
(Make sure 'QTextCursor' is registered using qRegisterMetaType().)
经过进一步检查发现原因是Qt中带参数的信号如果在线程中被发送,那么必须放入队列里面。
由于QTextEdit 自带的库,故将业务线程业务中的直接调用QTextEdit::append()
改为触发自定义信号,通过信号槽机制的槽函数来调用QTextEdit::append()
,以规避在线程中直接调用的问题。