当我在一个窗口中添加了 QTextEdit 控件,并在生成的新的子线程中直接调用了 QTextEdit 的append函数,这个时候就会出现下面的错误:
1)在子线程中声明信号和函数
signals:
void AppendText(const QString &text);
5)实现槽函数
void Widget:: SlotAppendText( const QString & text)
QObject::connect: Cannot queue arguments of type 'QTextCursor'
(Make sure 'QTextCursor' is registered using qRegisterMetaType().)
2. 解决方法
1)在子线程中声明信号和函数
signals:
void AppendText(const QString &text);
在主线程(UI线程)中声明槽和函数
private slots:
void SlotAppendText(const QString &text);
2)声明接口函数
public:
void Append(const QString &text);
3)在类构造函数中连接信号与槽
connect(receiveInfo, SIGNAL(AppendText(QString)), this, SLOT(SlotAppendText(QString)));
4)实现接口函数
void ReceiveTh::Append(const QString &text)
{
emit AppendText(text);
}
5)实现槽函数
void Widget:: SlotAppendText( const QString & text)
{
ui->textEdit->append(text);
//ui->textEdit->moveCursor(QTextCursor::End);
}