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()));
}

2人のユーザーからのメッセージを異なる色で印刷します。on_UserXMessage_receivedメソッドは、ユーザー名やタイムスタンプなどを追加することで最終的に複雑になる可能性があります...

于 2013-01-31T21:02:11.847 に答える