我很难搞清楚我应该怎么做。我有一个QWidget
主窗口,其QTabWidget
内有一个VBoxLayout
。窗口的主要功能是保存与我们的软件聊天的人的聊天。
所以我需要的是能够在人们打开新聊天时动态添加标签。例如,如果我正在和A人聊天,我从聊天列表中点击B,然后如果窗口打开,则在窗口中的QTabWidget
添加另一个选项卡,如果没有打开则只需创建一个新的窗口。
现在每个标签都是一个非常复杂的布局,因为我有笑脸和许多其他各种事情要处理,所以我宁愿不在代码中写下所有内容。
有没有办法可以将QTab
子类化,只为每个标签重用该类?第二个问题:我来自编程的android背景所以我习惯于能够为tab子类的每个实例(在这种情况下)都有一个可重用的XML布局,无论如何我可以做类似的事情与每个子类QML
?
如果我以完全错误的方式解决这个问题,我会非常感谢你的帮助。
答案 0 :(得分:4)
为了添加它,您不需要继承QTab
。 QTabWidget
有一个方便的方法int QTabWidget::addTab(QWidget * page, const QString & label)
。您可以直接将小部件添加到QTabWidget
。
答案 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类似的东西。