我遇到問題。當我的Addtext函數被調用時,我的文本編輯框似乎沒有更新。無法更新文本編輯文本QT
這裏是我添加文本
void CTextBox::AddText(QString string, QString spriteString)
{
textBrowser->setText(string + spriteString);
update();
}
然後另一類調用該函數,它應該添加文本到文本框,但事實並非如此。有任何想法嗎?
歡呼
我遇到問題。當我的Addtext函數被調用時,我的文本編輯框似乎沒有更新。無法更新文本編輯文本QT
這裏是我添加文本
void CTextBox::AddText(QString string, QString spriteString)
{
textBrowser->setText(string + spriteString);
update();
}
然後另一類調用該函數,它應該添加文本到文本框,但事實並非如此。有任何想法嗎?
歡呼
你怎麼稱呼CTextBox :: AddText()? update()
僅在程序返回到事件循環時安排paintEvent()
以備後用。這意味着,
你實際上需要有一個事件循環,即。在某些時候你需要撥打qApp->exec()
;
你需要允許PROGRAMM一些時間來qApp->processEvents()
(插入update()
)後,如果您想要的任何paining阻塞while() {...}
或類似的東西內完成。
編輯:試想想起來了,你甚至不應該需要調用update()
也不processEvents()
如果你的程序AddText
後返回到事件循環一段時間,所以真的似乎與事件的問題循環。發佈你的main.cpp,是嗎?
這是一個聽起來像你試圖做的簡單例子。也許你可以看到你的設計不同?
注意:沒有明確的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();
}
什麼是textBrowser?我想這是一個QTextEdit *。你如何創建它;通過QDesigner還是通過代碼? – pnezis
隨着代碼,我原本是要做一個QTestBrowser,但改變它,忘了改變變量名稱。 – Bushes
我認爲你需要展示更多的代碼才能找出問題所在。 'update'不應該是必須的 - 改變文本將導致'QTextEdit'被重新繪製。你確定函數實際上被調用嗎? (使用qDebug()並確認。) –