我的问题如下。我想制作一个新的小部件,它是 QTableWidget
+ QMenuBar
(具有 QTableWidget
的特定配置)。目前,我已经创建了一个 MyWidget,它派生自 QWidget
并包含一个 QTableWidget
+ 一个 QMenuBar
。但是是否可以通过从 QTableWidget
和 QMenuBar
派生 MyWidget
来做同样的事情?如果可能的话,构造函数是什么样的?
最佳答案
由于QTableWidget和QMenuBar都是继承自QWidget,所以我强烈建议不要使用双重继承。参见,例如 this question .
您目前所做的通常被认为是“正确”的方式,至少在 Qt 中是这样。我怀疑您想使用多重继承而不是组合的主要原因是您可能觉得您必须编写一堆函数,以便使用您的小部件的人可以,例如,添加到 QMenuBar。这样的函数可能如下所示:
QAction *MyWidget::addMenuToMyQMenuBar(QMenu *menu)
{
return myMenu->addMenu(menu);
}
对我来说这有点傻,相反我建议简单地为您的 QMenuBar 创建一个访问器函数:
QMenuBar *MyWidget::menuBar()
{
return myMenu;
}
现在有人使用你的类(class)就可以了
myWidget->menu()->addAction(someAction);
这种编码风格在 Qt 源代码中很常见,我认为它更简洁。
关于c++ - Qt 和 C++ : double inheritance vs composition?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11589126/