2012-12-16 37 views
2

这是我的UI:与UI创建标签编程

enter image description here

这片创建程序:

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

enter image description here

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

+0

首先,您需要在主窗口中创建一个'QTabWidget' – 2012-12-16 14:42:42

+0

X.Jacobs:检查更新的帖子。 – Carlj901

+0

您需要以编程方式在新选项卡中复制布局。无论您如何创建第一个标签,请执行相同的操作。 –

回答

3

在Designer中最简单的方法是创建一个名为ChatTab的新UI界面类,并将其基于QWidget

将您的聊天室小部件和布局从您的MainWindow UI窗体移动(即剪切和粘贴)到ChatTab窗体,但将QTabWidget容器保留在MainWindow窗体中。如果您希望聊天室在第一次打开时位于主窗口中,请将其第一个QWidget从Designer内部推广至ChatTab

任何附加标签应编程添加像这样:

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

添加花哨的东西给ChatTab构造函数,如果你想使您的生活更轻松。

+0

与QTabWidget方法相比,此方法的另一个优点是“ChatTab”小部件可以在任何窗口中重用 - QDockWidget,QDialog,QMainWindow等。您只需将其放入内部一个包装。 – Phlucious

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++,可能是这会给你一个提示。

0

使用当前聊天室类作为基类,并做一些布局的东西在里面;

下一次,你想创建一个新的标签,只是这样做:

ui->tabWidget->addTab(new chatRoom(), "Tab 3"); 

希望能有所帮助。