问题背景
写了一个简单的工具,使用TextEdit用于实时显示通信过程中的日志信息。在调试过程中发现输出到TextEdit中的内容部分字符显示为空白。不过通过鼠标选中内容,复制粘贴时文本能粘贴成功,并非空白。网上查了很多资料,奈何都没有找到这种问题的解决办法。
问题代码如下
connect(protocolTransactionWorker, &ProtocolTransaction::displayDebugInfo, [=](const QString &info){
qDebug() << "主线程收到协议数据:" << info << "线程ID:" << QThread::currentThreadId();
//追加数据 换行
//QString displayStr = info;
ui->textEditDebugInfo->append("你好!");
ui->textEditDebugInfo->append(info);
qDebug() << "主线程收到协议数据:" << info;
});
问题代码运行时的现象如下
问题解决
后来通过对比之前能正常显示内容的TextEdit的代码发现,正常显示的TextEdit都没有通过匿名函数来作为槽函数。因此修改代码如下;最终验证问题已经解决。
/* .... */
connect(protocolTransactionWorker, &ProtocolTransaction::displayDebugInfo,this,onDisplayDebugInfo);
/* .... */
void MainWindow::onDisplayDebugInfo(const QString &info)
{
qDebug() << "主线程收到协议数据:" << info << "线程ID:" << QThread::currentThreadId();
//追加数据 换行
//QString displayStr = info;
ui->textEditDebugInfo->append("你好!");
ui->textEditDebugInfo->append(info);
qDebug() << "主线程收到协议数据:" << info;
}