动态添加标签qt 5.1

时间:2014-01-21 13:08:42

标签: qt dynamic qml qtabwidget qt5.1

我很难搞清楚我应该怎么做。我有一个QWidget主窗口,其QTabWidget内有一个VBoxLayout。窗口的主要功能是保存与我们的软件聊天的人的聊天。

所以我需要的是能够在人们打开新聊天时动态添加标签。例如,如果我正在和A人聊天,我从聊天列表中点击B,然后如果窗口打开,则在窗口中的QTabWidget添加另一个选项卡,如果没有打开则只需创建一个新的窗口。

现在每个标签都是一个非常复杂的布局,因为我有笑脸和许多其他各种事情要处理,所以我宁愿不在代码中写下所有内容。

有没有办法可以将QTab子类化,只为每个标签重用该类?第二个问题:我来自编程的android背景所以我习惯于能够为tab子类的每个实例(在这种情况下)都有一个可重用的XML布局,无论如何我可以做类似的事情与每个子类QML

如果我以完全错误的方式解决这个问题,我会非常感谢你的帮助。

2 个答案:

答案 0 :(得分:4)

为了添加它,您不需要继承QTabQTabWidget有一个方便的方法int QTabWidget::addTab(QWidget * page, const QString & label)。您可以直接将小部件添加到QTabWidget

说明链接:http://qt-project.org/doc/qt-5/qtabwidget.html#addTab

答案 1 :(得分:3)

  

有没有办法可以将QTab子类化并重用该类   对于每个标签

是的,您可以继承QTabWidget。没有什么能阻止你这样做。但如果仅设置UI,我通常会

QLayout* setupViewLayout()
{
   //add bunch of stuff to layout
}

QTabWidget * tabwidget = new QTabWidget ;
QLayout* tablayout = setupViewLayout();
QWidget* widget = new QWidget;

widget->setLayout(tablayout );
tabwidget->addTab(widget);

我不需要为我想要的每种视图创建一个类。

  

无论如何,我可以为每个人用QML做类似的事情   子类

是的,您有qt quick designer用于QML,Qt designer用于创建将编译为c / c ++的ui文件。您可以以图形方式创建一些模板UI,它提供初始设置,然后在代码中添加特定的自定义,如果只有少数子窗口小部件在不同选项卡之间发生变化,则可能很少。我做了一些与基于标签的UI类似的东西。