0

我们一直在使用 Qt 的 WebKit 作为聊天历史控件。类似于Skype,它列出了对话历史,突出显示人名,显示他/她的文本,并允许轻松选择和复制。

由于某些我无法控制的原因,我的应用程序不再被允许使用 Qt 的 WebKit。我正在寻找在 qt 的基本产品中理想地使用控件的替代品(我非常愿意扩展)。

  1. 显示带有人名、文本和时间戳的类似 Skype 的聊天记录
  2. 能够为聊天记录行设置奇偶背景颜色
  3. 可滚动
  4. 用鼠标以自由形式轻松选择文本
  5. 动态能够添加聊天历史记录行,并滚动到底部以显示它们,以防用户向上滚动

有什么建议么?你认为我可以为此使用富编辑控件吗?它有只读模式吗?

4

1 回答 1

0

可以使用 QTextBrowser + html 组合,这可以实现非常高级的 html 格式设置。例如(假设 ui->textBrowser 是 QTextBrowser):

MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->textBrowser->setHtml(QString());

    on_User1Message_received("Message from user 1");
    on_User2Message_received("Message from user 2");
}

void MainWindow::on_User1Message_received(const QString &msg)
{
    ui->textBrowser->append(QString().sprintf("<font color=\"red\"> %s </font>",msg.toStdString().c_str()));
}

void MainWindow::on_User2Message_received(const QString &msg)
{
    ui->textBrowser->append(QString().sprintf("<font color=\"blue\"> %s </font>",msg.toStdString().c_str()));
}

以不同颜色打印来自两个用户的消息。on_UserXMessage_received 方法最终可能会很复杂,添加用户名、时间戳等...

于 2013-01-31T21:02:11.847 回答