2

这是我的用户界面:

在此处输入图像描述

这是以编程方式创建的选项卡:

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

在此处输入图像描述

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

4

3 回答 3

3

最简单的方法(在 Designer 中)是创建一个名为类似的新 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 回答