使用Qt显示聊天消息(C ++)

时间:2016-11-03 20:22:42

标签: c++ qt

我花了几天时间搜索如何解决问题我尝试了不同的方法,但没有结果。我的问题是:我用Qt Framework(C ++)开发了一个聊天程序,我想显示聊天记录。在每个到达的消息中,有一个用户的图标,他的名字和消息到达的确切日期。当然是消息。消息可以包含文本,也可以包含图标(.gif或只是.png)(就像facebook或Skype一样) 我想要那样: Like This Exactly

这是我尝试过的。 我创建了一个名为MessageText的类,该类派生自QPlaintextEdit,它有一个名为append的方法来添加新消息,但问题是我无法添加图标而用户无法更改消息颜色。 这是我的代码:

 #include "MessageText.h"
    #include <QTextEdit>
    MessageText::MessageText()
    {   
        this->setObjectName("asf");
        this->setStyleSheet("#asf{background-color:#AACC44;}");
        this->setReadOnly(true);    
    }

    void MessageText::appendMessage( QString icon, QString name, QString text)
    {
        QLabel *nameTime1=new QLabel(this);  //container of user's name and the             date
        QLabel *iconContiner1=new QLabel(this); /container of user's icon
        nameTime1->setStyleSheet("background-color:rgb(242,242,242);");
        nameTime1->setText("           "+QString(QChar(0x200E))+name);
        iconContiner1->setStyleSheet("background-image:url(ua/"+icon+".png);background-repeat:no-repeat;");

            this->appendPlainText(+"\n\n"+text); // Adds the message to the widget

           nameTime1->setGeometry(0,(this->document()->size().height()-2)*22,1056,18); //to put new message just after the previous
           iconContiner1->setGeometry(2,(this->document()->size().height()-2)*22,27,27);
            this->verticalScrollBar()->setValue(this->verticalScrollBar()->maximum());
            nameTime1->show();
           iconContiner1->show();
    }

实现这一目标的最佳方法是什么,我将非常感激 提前谢谢你。

1 个答案:

答案 0 :(得分:1)

您可以在QLabel的文本中使用HTML。与text = "hello <img src=":/Desktop/GameAssetDesign/springgameAssets/MassBody_G.png" width = 30 height = 30>"

一样

example