2016-11-03 4 views
0

Я провел дни, пытаясь исправить проблему, я пробовал использовать другой подход, но без результата. моя проблема заключается в следующем: я разработал чат-программу с Qt Framework (C++), и я хочу показать историю чата. в каждом полученном сообщении есть значок пользователя, его имя и точная дата прихода сообщения. И, конечно же, сообщение. сообщение может содержать текст как волю в виде пиктограмм (.gif или просто .png) (так же, как Facebook или скайп) я хочу так точно: Like This ExactlyПоказать чат Сообщения с помощью Qt (C++)

это то, что я попробовал. Я создал класс с именем 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(); 
    } 

, что это лучший подход для достижения Thisi будет очень благодарна спасибо Су много заранее.

+0

Почему вы черпаете класс от QPlainTextEdit? –

+0

, потому что я определил метод в этом классе (append), чтобы добавлять каждый раз, когда новые сообщения также записывают только короткий код. потому что есть публичный разговор, как приватная конвертация. –

+0

Я уверен, что это не лучший способ сделать это. если вы можете привести меня к лучшему пути, я буду так благодарен –

ответ

1

HTML-текст можно использовать в тексте QLabel. Как text = "hello <img src=":/Desktop/GameAssetDesign/springgameAssets/MassBody_G.png" width = 30 height = 30>"

example

+0

это не совсем то, что я хочу, я надеюсь, что кто-то может мне помочь –

Смежные вопросы