我很难弄清楚我该怎么做。我有一个QWidget主窗口,它在VBoxLayout中有一个QTabWidget。窗口的主要功能是保持与我们的软件聊天的人的聊天。
因此,我需要的是能够动态添加标签,当人们打开一个新的聊天。例如,如果我正在与person A聊天,并从聊天列表中单击person B,那么如果打开了窗口,则将另一个选项卡添加到窗口中的QTabWidget中,如果未打开,则只需创建一个新窗口。
现在,在每个选项卡中都有一个非常复杂的布局,因为我有微笑和许多其他各种事情要处理,所以我不想用代码编写所有这些。
是否有一种方法可以将QTab子类化,并为每个选项卡重用该类?第二个问题:我来自android的编程背景,所以我习惯于对选项卡子类的每个实例(在本例中)有一个可重用的XML布局,对于每个子类,我是否可以使用QML做类似的事情呢?
如果我用完全错误的方式去做这件事,我真的很感激你的帮助。
发布于 2014-01-21 14:46:25
您不需要为了添加QTab而对它进行子类化。QTabWidget有一种方便的int QTabWidget::addTab(QWidget * page, const QString & label)方法。您可以直接将小部件添加到QTabWidget中。
链接到描述:http://qt-project.org/doc/qt-5/qtabwidget.html#addTab
发布于 2014-01-21 13:29:42
是否有一种方法可以将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做类似的事情吗?
是的,您有用于QML的qt快速设计器和用于创建ui文件的Qt设计者,这些文件将编译为c/c++。您可以创建一些图形化的模板UI,它提供初始设置,然后在codeIt中添加特定的自定义,如果在不同的选项卡之间只有很少的子小部件更改,则可能会非常少。我做了一些类似的UI,它也是基于标签的。
https://stackoverflow.com/questions/21259077
复制相似问题