我的问题如下。我想制作一个新的小部件,它是一个QTableWidget
+一个QMenuBar
(具有QTableWidget
的特定配置)。当前,我已经创建了一个MyWidget,它源自QWidget
并包含一个QTableWidget
+一个QMenuBar
。但是是否可以通过从MyWidget
和QTableWidget
导出QMenuBar
来做同样的事情?如果可能的话,构造函数是什么样子?
最佳答案
由于QTableWidget和QMenuBar都从QWidget继承,因此我强烈建议不要使用双重继承。例如,参见this question。
至少在Qt中,您当前所做的事情通常被认为是“正确”的方法。我怀疑要使用多重继承而不是合成的主要原因是,您可能会觉得自己不得不编写一堆函数,以便使使用小部件的人可以将其添加到QMenuBar中。这样的功能可能看起来像这样:
QAction *MyWidget::addMenuToMyQMenuBar(QMenu *menu)
{
return myMenu->addMenu(menu);
}
对我来说这有点愚蠢,相反,我建议您简单地为您的QMenuBar创建一个访问器函数:
QMenuBar *MyWidget::menuBar()
{
return myMenu;
}
现在有人在使用您的课程就可以
myWidget->menu()->addAction(someAction);
这种编码风格在Qt源代码中很常见,我认为它更简洁。