2

我很难弄清楚我应该如何做到这一点。我有一个QWidget主窗口,它的QTabWidget内部有一个VBoxLayout. 窗口的主要功能是保存与我们软件聊天的人的聊天记录。

所以我需要的是能够在人们打开新聊天时动态添加标签。例如,如果我正在与人 A 聊天并且我从我的聊天列表中单击人 B,那么如果窗口已打开,则在窗口中添加另一个选项卡QTabWidget,如果未打开则只需创建一个新窗口。

现在在每个选项卡中都有一个相当复杂的布局,因为我有笑脸和许多其他各种各样的事情要处理,所以我宁愿不把所有这些都写在代码中。

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

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

4

2 回答 2

4

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

链接到描述:http: //qt-project.org/doc/qt-5/qtabwidget.html#addTab

于 2014-01-21T14:46:25.230 回答
3

有没有一种方法可以子类化 QTab 并为每个选项卡重用该类

是的,你可以继承 QTabWidget。没有什么能阻止你这样做。但如果只是设置用户界面,我通常会这样做

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 做类似的事情吗?

是的,你有用于 QML的qt 快速设计器和用于创建将编译为 c/c++ 的 ui 文件的Qt 设计器。您可以以图形方式创建一些提供初始设置的模板 UI,然后在代码中添加特定的自定义如果只有几个子小部件在不同的选项卡之间发生变化,这可能是少数。我也对基于选项卡的 UI 做了类似的事情。

于 2014-01-21T13:29:42.823 回答