【Qt】一文总结Qt控件模块化设计思想

本文探讨了Qt框架中控件的模块化设计,以QWidget为例,阐述了如何通过继承和重载实现自定义控件。通过创建concentricCircleWidget类,展示了如何利用Qt的面向对象特性实现高内聚、低耦合的设计,以满足不同界面需求。该类在实际项目中可复用,体现了Qt设计的核心和关键技术。

设计思想从哲学的角度来看的话,是方法和思路的集成。那么方法和思路则可以使用过程来描述,俗称流程逻辑,做软件开发的,可能对这方面就更加的熟悉和敏感,言归正传,不扯远了,本文描述Qt中控件的模块化设计思想,这种思想并不是Qt独有的,而是软件中常见的设计思想和方法。

正文开始

Qt是C++的框架,则与生俱来“面向对象”的设计思想,什么是面向对象的设计思想,每个人对其理解都不一样,很多会说继承、封装、多态等,对这三个词语我想每一个人都有不同的理解,可能工作实践了多年,才有所领悟,本文就不聊什么是面向对象的设计思想了,这里面太深、太大了,也是一个有趣的话题。

在QtCreator集成开发工具中,当我们在创建控件的时候,一般会选择继承QWidget去代表一个控件,这一点则深刻体现了Qt的模块化设计思想。如下图所示:

QWidget类派生了很多类出来,几乎代表了Qt中所有可视化的图形控件,所以在创建自己的控件时,以该类来作为父类在开发中很是常用。该类中有很多属性参数和公共成员函数,这里不一一举例了。

在实现自定义的模块控件时,往往需要以QWidget作为父类。判断的依据则是类图中是否包含有所需要的成员函数行为,例如:如果需要视图框架中的视图类(QGraphicsView)的函数行为,那么就应该以QGraphicsView作为父类。

例如小生这里创建了一个叫concentricCircleWidget的类,该类继承自QWidget,目的是用于进行自定义控件的开发。那个在该类中则会放置与描述该控件的属性参数(一般以private私有进行修饰),然后重载了paintEvent()函数,目的对于描述自定义控件的样子,使用QPalette描述了该控件的背景颜色。

基本上,关于所有与concentricCircleWidget类相关的参数都放放置于该类中,如果其他类需要访问该类的参数则以publicprotected方式开放,这样则符合“高内聚、低耦合”的设计原则了。贴上该类的描述代码吧:

//头文件

#ifndef CONCENTRIC_CIRCLE_WIDGET_H
#define CONCENTRIC_CIRCLE_WIDGET_H

#include <QWidget>
#include <QPainter>

namespace Ui {
   
   
class concentricCircleWidget;
}

class concentricCircleWidget : public QWidget
{
   
   
    Q_OBJECT

public:
    explicit concentricCircleWidget(QWidget *parent = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iriczhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值