程序的基本调用流程是,在一个业务处理线程中,通过调用QTextEdit::append()方法输出提示信息,从而引发程序崩溃。

程序运行时的错误提示如下:

QObject::connect: Cannot queue arguments of type 'QTextCursor'
 
(Make sure 'QTextCursor' is registered using qRegisterMetaType().)

经过进一步检查发现原因是Qt中带参数的信号如果在线程中被发送,那么必须放入队列里面。
由于QTextEdit 自带的库,故将业务线程业务中的直接调用QTextEdit::append()改为触发自定义信号,通过信号槽机制的槽函数来调用QTextEdit::append(),以规避在线程中直接调用的问题。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐