使用动态创建对象技术,可以很方便的构建一个导航页框架,通过脚本属性配置即可完成页面对象创建和加载功能。本文通过上文的动态创建对象技术实现了一个简单的导航页框架。
框架结构示意如下:
linkType属性指示导航页面属性,link属性指示显示页面
导航功能类声明如下:
class SmartToolbarPrivate;
class QToolButton;
class SmartToolbar:public QFrame{
Q_DECLARE_PRIVATE(SmartToolbar)
Q_OBJECT
Q_PROPERTY(QString defaultToolbarItem READ defaultToolbarItem WRITE setDefaultToolbarItem)
public:
SmartToolbar(QWidget * parent = nullptr);
~SmartToolbar();
//设置导航显示页面的父容器
void setFormContainer(QWidget* c);
QWidget* formContainer()const;
//指定需要缓存的显示页面
void addCacheForm(const QString& formName);
void removeCacheForm(const QString& formName);
//设置导航工具
void setDefaultToolbarItem(const QString& item);
const QString& defaultToolbarItem()const;
signals:
//导航工具切换信号
void toolbarItemChanged(const QString&, const QString&);
//显示页面切换信号
void formChanged(const QString&, const QString&);
//导航热点按键
void hintButton(QToolButton*);
protected:
bool eventFilter(QObject *, QEvent *);
private:
void transmitHintButton(QToolButton*);
void transmitToolbarItemChanged(const QString&, const QString&);
void transmitFormChanged(const QString&, const QString&);
};
具体功能描述见注释,由于代码较多,没有展示出来。有兴趣的朋友可以前往SmartToolbar.zip自行下载。
最后展示下导航效果: