Qt程序错误“QObject::connect: Cannot queue arguments of type ‘QTextCursor’”的解决方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Qt程序错误“QObject::connect: Cannot queue arguments of type ‘QTextCursor’”的解决方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1373字,纯文字阅读大概需要2分钟。
内容图文
Qt程序错误“QObject::connect: Cannot queue arguments of type ‘QTextCursor’”的解决方法
原创文章,转载请注明:?转载自勤奋的小青蛙本文链接地址:?Qt程序错误“QObject::connect: Cannot queue arguments of type ‘QTextCursor’”的解决方法
1. 运行情景
当我在一个窗口中添加了 QTextEdit 控件,并在一个工作者线程中直接调用了 QTextEdit 的append函数,这个时候就会出现下面的错误:
1 2 3 |
QObject::connect: Cannot queue arguments of type 'QTextCursor'
(Make sure 'QTextCursor' is registered using qRegisterMetaType().)
|
2. 解决方法
经过进一步检查发现原因是Qt中带参数的信号如果在线程中被发送,那么必须放入队列里面,由于QTextEdit是Qt库自带的,改起来不方便,所以我采用了一个简单的方法来解决这个问题,原理是在窗口类中定义信号和槽,并实现另一个接口函数,这个接口函数由线程调用,在接口函数中emit一个信号,示例代码如下:
1)声明信号和函数
?1 2 3 4 |
signals:
???? void AppendText( const QString &text);
private slots:
???? void SlotAppendText( const QString &text);
|
2)声明接口函数
?1 2 |
public :
???? void Append( const QString &text);
|
3)在类构造函数中连接信号与槽
?1 |
connect( this ,SIGNAL(AppendText(QString)), this ,SLOT(SlotAppendText(QString)));
|
4)实现接口函数
?1 2 3 4 |
void ClassName::Append( const QString &text)
{
???? emit AppendText( "ok: string1" );
}
|
5)实现槽函数
?1 2 3 4 |
void CIspWnd::SlotAppendText( const QString &text)
{
???? mText.append(text);
}
|
小结:不带参数的信号在Qt工作者线程中被发送即不会出现这类错误。
?内容总结
以上是互联网集市为您收集整理的Qt程序错误“QObject::connect: Cannot queue arguments of type ‘QTextCursor’”的解决方法全部内容,希望文章能够帮你解决Qt程序错误“QObject::connect: Cannot queue arguments of type ‘QTextCursor’”的解决方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。