Qt编程:动态创建对象技术之导航页实现

使用动态创建对象技术,可以很方便的构建一个导航页框架,通过脚本属性配置即可完成页面对象创建和加载功能。本文通过上文的动态创建对象技术实现了一个简单的导航页框架。

框架结构示意如下:

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自行下载。

最后展示下导航效果:

导航效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

友情链接更多精彩内容