覆盖插槽中的文本

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 中覆盖/重新实现插槽

使用 PySide 覆盖 QWebPage 中的 shouldInterruptJavaScript

Java/Android 中的 Firebase:事务被后续集合覆盖

Vue 插槽

下划线覆盖 NSAttributedString 中的文本

出现键盘时移动文本字段会覆盖(Swift)中的顶部文本字段