Qt:;“聊天记录”;控制
我们一直在使用Qt的WebKit作为聊天历史控件。与skype类似,它列出对话历史记录,突出显示此人的姓名,显示其文本,并允许轻松选择和复制 由于我无法控制的原因,我的应用程序不再允许使用Qt的WebKit。我正在寻找在qt的基本产品中理想地使用控件的替代品(我非常愿意扩展)Qt:;“聊天记录”;控制,qt,Qt,我们一直在使用Qt的WebKit作为聊天历史控件。与skype类似,它列出对话历史记录,突出显示此人的姓名,显示其文本,并允许轻松选择和复制 由于我无法控制的原因,我的应用程序不再允许使用Qt的WebKit。我正在寻找在qt的基本产品中理想地使用控件的替代品(我非常愿意扩展) 显示类似skype的聊天历史记录,包括姓名、文本和时间戳 能够为聊天记录行设置奇偶背景色 可滚动 使用鼠标以自由形式轻松选择文本 动态地添加聊天历史记录行,并滚动到底部显示,以防用户向上滚动 有什么建议吗?你认为我可以使用
有什么建议吗?你认为我可以使用丰富的编辑控件吗?它是否具有只读模式?可以使用QTextBrowser+html组合,这允许使用html实现相当高级的格式设置。例如(假设ui->textBrowser为QTextBrowser):
MainWindow::MainWindow(QWidget*父项)
:QMainWindow(父级)
,ui(新ui::Main窗口)
{
用户界面->设置用户界面(此);
用户界面->文本浏览器->设置HTML(QString());
在用户1收到消息(“来自用户1的消息”);
在收到用户2消息(“来自用户2的消息”);
}
void main window::on_user1收到消息(const QString&msg)
{
ui->textBrowser->append(QString().sprintf(“%s”,msg.toStdString().c_str());
}
void main window::on_User2Message_已收到(const QString&msg)
{
ui->textBrowser->append(QString().sprintf(“%s”,msg.toStdString().c_str());
}
以不同颜色打印来自两个用户的消息。接收的_UserXMessage_上的方法最终可能会很复杂,添加用户名、时间戳等…我考虑过,但它没有颜色支持,正如我所看到的,是吗?这是一个纯文本的“超文本”浏览器。如果我错了,请纠正我。这是真的,但是,如果你改变字体颜色而不是背景颜色,这难道不够吗?我认为这可以通过使用html或富文本的QTextBrowser来实现……最终使用了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()));
}