【问题标题】: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() 检索旧文本

标签: windows qt chat overwrite slot


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多