これは私のUIです:
これは、プログラムで作成されたタブです。
ui->tabWidget->addTab(new QWidget(), "Tab 2");
新しく作成したタブを、「チャット ルーム」タブとまったく同じレイアウトにしたい。これを行う方法についてのアドバイスは素晴らしいでしょう。
(デザイナで)これを行う最も簡単な方法は、 のような名前の新しい UI フォーム クラスを作成し、ChatTab
それをベースにすることQWidget
です。
チャット ルーム ウィジェットとレイアウトを MainWindow UI フォームから ChatTab フォームに移動 (カット アンド ペースト) しますが、QTabWidget
コンテナーは MainWindow フォームに残します。チャット ルームが最初に開いたときにメイン ウィンドウに表示されるようにするには、その最初のチャット ルームをDesigner 内からQWidget
に昇格させます。ChatTab
追加のタブは、次のようにプログラムで追加する必要があります。
ui->tabWidget->addTab(new ChatTab(), "Tab 2");
生活を楽にしたい場合は、ChatTab コンストラクターに凝ったものを追加してください。
このレイアウトのカスタム 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++ を使用していませんでしたが、これがヒントになるかもしれません。
現在のchatRoomクラスを基本クラスとして使用し、その中でいくつかのレイアウト作業を行います。
次に新しいタブを作成する場合は、次のようにします。
ui->tabWidget->addTab(new chatRoom(), "Tab 3");
お役に立てれば幸いです。