无法更新文本编辑文本 QT

Can't update Text Edit Text QT

本文关键字:文本 QT 文本编辑 更新      更新时间:2023-10-16

我有一个问题。当我的Addtext函数被调用时,我的textEditBox似乎没有更新。

这是我的Addtext:

void CTextBox::AddText(QString string, QString spriteString)  
{
    textBrowser->setText(string + spriteString);
    update();
}

另一个类然后调用该函数,它应该向textbox添加文本,但它没有。

如何调用CTextBox::AddText()?update()只在程序返回事件循环时调度paintEvent()。这意味着

  1. 你实际上需要有一个事件循环,即。有时候你需要调用qApp->exec();

  2. 你需要允许程序一些时间qApp->processEvents()(插入update()之后),如果你想在阻塞while() {...}或类似的东西内完成任何绘画。

编辑:想想看,如果你的程序在AddText之后的一段时间返回到事件循环,你甚至不需要调用update()processEvents(),所以事件循环似乎真的有问题。把你的主地址寄过来,好吗?

下面是一个简单的例子,它听起来像是您想要做的事情。也许你能看出你的设计有什么不同?

注意:不需要显式的update()。我认为这是在转移注意力。我认为更有可能的是(1)你以某种方式用空字符串调用你的AddText方法,或者(2)你的真实的文本编辑是一个不同的变量,并以某种方式创建了其中两个,正在更新一个只是存在于内存中,从未添加到布局。也许你的FileLoaderQT的代码会有所帮助?(你可以编辑你的问题,而不是发表评论。)

#include <QtGui>
int main(int argc, char **argv) {
  QApplication app(argc, argv);
  QMainWindow w;
  QTextEdit *edit = new QTextEdit;
  w.setCentralWidget(edit);
  edit->setText("Hello world!");
  w.show();
  edit->append("Hello world again!");
  return app.exec();
}