用数据轰炸时优化QPlainTextEdit小部件
Optimizing QPlainTextEdit Widget When Bombarded with Data?
所以基本上我拥有的是一个Qt应用程序,它有一个主GUI线程和一个辅助线程。
工作线程是这样的:
void Client::readResults(int msgqid, pid_t pid)
{
int ret;
msg_t message;
connect(this, SIGNAL(dataReceived(QString)), this, SLOT(updateDisplay(QString)));
connect(this, SIGNAL(doneProcessing(QString)), this, SLOT(updateStatus(QString)));
for (;;)
{
ret = msgrcv(msgqid, &message, MSGSIZE, pid, 0);
if (ret == -1)
{
showStatusBarError("msgrcv");
return;
}
if (ret > 0)
{
emit dataReceived(QLatin1String(message.info));
if (message.is_eof)
{
emit doneProcessing("Done!");
break;
}
}
}
}
它所做的只是从消息队列中读取并发出一个信号,该信号导致来自主GUI线程(产生该线程)的QPlainTextEdit小部件调用appendPlainText(message.info),以便将从消息队列接收到的数据附加到小部件。
问题是,如果我从队列中读取大量数据(实际上是一个大约30MB或更多的文本文件),整个GUI就会挂起,直到工作线程完成。有没有办法让它不挂起,让用户在从工作线程接收数据时真正看到QPlainTextEdit小部件滚动?
谢谢!
我以前也遇到过类似的问题。在我的情况下,根据我的经验,信号/插槽系统似乎锁定了程序流。当您读入大量数据或频繁读入某些数据时,它自然会导致GUI速度减慢。
对我有效的是使用基于模型的输入,这允许稳定平滑的更新。您可能想考虑重新定位输入,以便可以直接从输入读取到GUI?
相关文章:
- QPlainTextEdit 仅设置一行字体
- 文本颜色 QPlainTextEdit QT
- 如何将回调与qplaintExtedit更改连接
- 如何在Qt中将文本附加到QPlainTextEdit并保持滚动条稳定?
- 如何在显示时调整 QPlainTextEdit 小部件的大小
- 如何添加清除选项 t qplaintextedit
- QT设置了QplaintExtedIt的滚动区域,以匹配Anothers的滚动区域
- QPlainTextEdit-搜索文档到底,然后从头开始
- 如何在不添加换行符的情况下将文本附加到QPlainTextEdit,并保持滚动在底部
- 如何从qplaintextedit读取特定行
- 为什么在qplaintextedit中没有放大插槽
- 将引用 qplaintextEdit 发送到构造函数类C++
- 如何从qplaintExtedIt获取文本颜色
- QPlainTextEdit dragEnterEvent 不接受 text/uri-list mime 类型
- 在 QPlainTextEdit 的第 80 列中画一条线
- QPlainTextEdit - 绝对大小
- 将事件/操作连接到 QPlainTextEdit
- 如何使用颜色将QPlainTextEdit内容渲染到QPixmap
- QPlainTextEdit-手动推入撤消堆栈
- 用数据轰炸时优化QPlainTextEdit小部件