以编程方式使用UI创建选项卡

时间:2012-12-16 14:28:05

标签: c++ c qt

这是我的用户界面:

enter image description here

这是以编程方式创建的标签:

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

enter image description here

我希望新创建的标签具有与“聊天室”标签完全相同的布局。关于如何做到这一点的任何建议都会很棒。

3 个答案:

答案 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");

希望能提供帮助。