2

これは私のUIです:

ここに画像の説明を入力

これは、プログラムで作成されたタブです。

ui->tabWidget->addTab(new QWidget(), "Tab 2");

ここに画像の説明を入力

新しく作成したタブを、「チャット ルーム」タブとまったく同じレイアウトにしたい。これを行う方法についてのアドバイスは素晴らしいでしょう。

4

3 に答える 3

3

(デザイナで)これを行う最も簡単な方法は、 のような名前の新しい UI フォーム クラスを作成し、ChatTabそれをベースにすることQWidgetです。

チャット ルーム ウィジェットとレイアウトを MainWindow UI フォームから ChatTab フォームに移動 (カット アンド ペースト) しますが、QTabWidgetコンテナーは MainWindow フォームに残します。チャット ルームが最初に開いたときにメイン ウィンドウに表示されるようにするには、その最初のチャット ルームをDesigner 内からQWidgetに昇格させます。ChatTab

追加のタブは、次のようにプログラムで追加する必要があります。

ui->tabWidget->addTab(new ChatTab(), "Tab 2");

生活を楽にしたい場合は、ChatTab コンストラクターに凝ったものを追加してください。

于 2012-12-17T20:09:13.010 に答える
1

このレイアウトのカスタム QTabWidget を ChatWidget という名前で作成し、次のようなファクトリ API を作成する必要があります。

ChatWidget * ChatWidget::creater(TabWidget * tw, ChatData * cd) {
    ChatWidget * cw = ChatWidget.create();
    tw.addTab(cast<QWidget>cw, 0);
    // some init
    ...
    return cw;
}

長い間 Qt と C++ を使用していませんでしたが、これがヒントになるかもしれません。

于 2012-12-16T15:00:21.610 に答える
0

現在のchatRoomクラスを基本クラスとして使用し、その中でいくつかのレイアウト作業を行います。

次に新しいタブを作成する場合は、次のようにします。

ui->tabWidget->addTab(new chatRoom(), "Tab 3");

お役に立てれば幸いです。

于 2012-12-17T05:37:11.860 に答える