这是我的用户界面:
这是以编程方式创建的选项卡:
ui->tabWidget->addTab(new QWidget(), "Tab 2");
我希望新创建的选项卡具有与“聊天室”选项卡完全相同的布局。关于如何做到这一点的任何建议都会很棒。
最简单的方法(在 Designer 中)是创建一个名为类似的新 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");
希望有所帮助。