Qt:“聊天记录”控件

时间:2013-01-30 17:24:24

标签: qt

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

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

  1. 显示类似Skype的聊天记录,其中包含人名,文字和时间戳
  2. 能够为聊天记录行设置奇数均匀的背景颜色
  3. 可滚动
  4. 使用自由格式的鼠标轻松选择
  5. 动态地可以添加聊天记录行,并滚动到底部以显示它们,以防用户向上滚动
  6. 有什么建议吗?你认为我可以使用丰富的编辑控件吗?它有只读模式吗?

1 个答案:

答案 0 :(得分: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方法最终可能很复杂,添加用户名,时间戳等等......