gpt4 book ai didi

c++ - "real time"更新一个Qt TextView

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:13:31 24 4
gpt4 key购买 nike

我有一个带有嵌入式脚本/jit 的 Qt 应用程序。现在我想在 QTextEdit(更具体的 QPlainTextEdit)上接收脚本的输出。为此,正在发出回调。我面临的问题是,无论我尝试向 TextEdit 输出什么,要么延迟到脚本完成,要么在 2-3 秒后卡住(然后延迟到脚本完成)。我尝试使用信号和槽进行更新,但也尝试使用直接函数调用——都没有用。还重新绘制/更新 TextEdit 和父表单,甚至 QCoreApplication::flush() 也显示出很少/没有效果。好像我在做一些根本错误的事情。关于如何实现“实时”更新的任何想法或示例?

顺便说一句,正在调用更新例程 - 可以实时将调试输出到标准输出。

最佳答案

只是为了勾画一个使用线程的解决方案,我已经多次使用它来进行日志记录,并且可以按预期工作:

定义你的线程类:

class MyThread : public QThread
{
Q_OBJECT
public:
MyThread(QObject *parent=0) : QThread(parent) {}
signals:
void signalLogMessage(const QString &logMessage);

...
};

每当你想在主线程中显示一条日志消息时,只需使用

发出 signalLogMessage("Foo!");

在你的主线程中:

MyThread *thread = new MyThread(this);
connect(thread, SIGNAL(signalLogMessage(const QString&)),
this, SLOT(logMessageFromThread(const QString&)));
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
...
thread->start();

logMessageFromThread 执行类似 myPlainTextEdit->appendPlainText(message) 的操作。这没有任何延迟或其他问题。

希望对您有所帮助。

关于c++ - "real time"更新一个Qt TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3446955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com