这是我的用户界面:
这是以编程方式创建的标签:
ui->tabWidget->addTab(new QWidget(), "Tab 2");
我希望新创建的标签具有与“聊天室”标签完全相同的布局。关于如何做到这一点的任何建议都会很棒。
答案 0 :(得分:3)
最简单的方法(在Designer中)是创建一个名为ChatTab
的新UI表单类,并将其基于QWidget
。
将聊天室窗口小部件和布局从MainWindow UI窗体移动(即剪切并粘贴)到ChatTab表单,但将QTabWidget
容器保留在MainWindow窗体中。如果您希望聊天室在首次打开时位于主窗口中,请从Designer内部将其第一个QWidget
升级为ChatTab
。
任何其他标签都应以编程方式添加,如下所示:
ui->tabWidget->addTab(new ChatTab(), "Tab 2");
如果你想让生活更轻松,可以在ChatTab构造函数中添加花哨的东西。
答案 1 :(得分: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 ++,可能会给你一个提示。
答案 2 :(得分:0)
将您当前的 chatRoom 类用作 基类 并在其中执行一些布局工作;
下次要创建新的标签时,只需执行以下操作:
ui->tabWidget->addTab(new chatRoom(), "Tab 3");
希望能提供帮助。