覆盖插槽中的文本
Posted
技术标签:
【中文标题】覆盖插槽中的文本【英文标题】:Overwriting the text in slot 【发布时间】:2022-01-18 08:54:07 【问题描述】:我正在设计一个聊天应用程序。我的问题是我在按下 Qt 中的发送按钮时在聊天框中打印用户的消息和名称。每次我按下按钮而不是在下一行写入新消息时,它都会删除上一条消息并通过仅显示新消息来覆盖它。
代码:
QString str = ui->textEdit->toPlainText();
QString name= ui->textEdit->objectName();
ui->textBrowser->setText(name);
ui->textBrowser->setText(name + ": " + str);
std::cout<<endl;
【问题讨论】:
setText() 设置完整的文本 - 所以它正在做你告诉它做的事情。如果要附加新文本,则必须通过 QTextBrowser::text() 检索旧文本 【参考方案1】:setText()
在 textEdit 中设置文本(而不是附加您可能猜到的内容),因此您的第二个 setText()
会覆盖第一个。
QString str = ui->textEdit->toPlainText();
QString name= ui->textEdit->objectName();
QString oldMsg = ui->textBrowser->text();
QString newMsg = name + ": " + str;
ui->textBrowser->setText(oldMsg + "\n" + newMsg);
【讨论】:
以上是关于覆盖插槽中的文本的主要内容,如果未能解决你的问题,请参考以下文章
使用 PySide 覆盖 QWebPage 中的 shouldInterruptJavaScript