我正在尝试实现一个QToolBar子类,它的项目由模型指定,而不是单独添加.这意味着选择添加/删除项目(工具栏按钮)的功能,例如addAction不应公开访问.
从这个对象继承的最佳方法是什么,但是选择私有函数?
我目前最好的想法是这样做:
class ToolbarView : public QToolBar
{
Q_OBJECT
public:
explicit ToolbarView(QWidget *parent = 0);
signals:
public slots:
private:
void addAction (QAction *action) {Q_UNUSED(action)};
QAction* addAction (const QString &text) {return QToolBar::addAction(text) ;}
...
QAction* addSeparator() {QToolBar::addSeparator();}
... [list of about 10 of these]
};
Run Code Online (Sandbox Code Playgroud)
因此,将所有不应公开的功能重新定义为私有.
这是一个好主意,还是有更好的方法?
ice*_*ime 10
只要您公开继承QToolBar,您就可以使客户端代码将对象视为对象,并调用例如addAction成员函数.如果您想确保这些功能无法访问,您将以另一种方式执行此操作:
QToolBarusing声明)如果您想坚持使用初始解决方案并公开继承QToolbar:
using声明来更改基类函数的可访问性,而不是隐藏它们