Qt C++程序设计 课件 chap6 QWidget_第1页
Qt C++程序设计 课件 chap6 QWidget_第2页
Qt C++程序设计 课件 chap6 QWidget_第3页
Qt C++程序设计 课件 chap6 QWidget_第4页
Qt C++程序设计 课件 chap6 QWidget_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

QtC++第六章自定义窗口部件主要内容132Qwidget类QWidget派生类综合应用案例窗口部件Qt提供了一整套的窗口部件,它们组合起来可用于创建用户界面的可视元素。按钮、菜单、滚动条、消息框和应用程序窗口都是窗口部件的实例。因为所有的窗口部件既是控件又是容器,因此Qt的窗口部件不能任意地分为控件和容器。本章提到的窗口部件一种是以利用Qt提供的类所定义的对象,一般都是继承自Qwidget类;也可以在绘制界面是用双缓冲技术实现。

6.1QWidget类QWidget类是所有用户界面对象的基类。窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现,这些部件组成了与用户交互的窗口。QWidget

类代表一般的窗口,其他窗口类都是从QWidget

类继承出来的。而QWidget

类则同时继承了QObject

类和QPaintDevice

类,也就是说,窗口类都是Qt对象类。这里的QPaintDevice

类则是所有可绘制的对象的基类。

6.1QWidget类常用窗口类的继承关系如图所示:

.1QWidget类一、QWidget类特点:顶级窗口和子窗口每一个窗口部件都是矩形,一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。一个窗口可以单独显示也可以嵌入到其他部件中。不被嵌入到一个父窗口部件的窗口部件被叫做顶级窗口部件。顶级窗口部件是有框架和标题栏的窗口。在Qt中,QMainWindow和不同的QDialog的子类是最普通的顶级窗口。非顶级窗口部件是子窗口部件。它们是它们的父窗口部件中的子窗口。在Qt中的绝大多数其它窗口部件仅仅作为子窗口部件才是有用的。5

6.1QWidget类一、QWidget类特点:继承Qwidget的子类特性QWidget有很多成员函数,但是它们中的一些有少量的直接功能。每一个窗口部件构造函数接受一个或两个标准参数:QWidget::QWidget(QWidget*parent=0,Qt::WindowFlagsf=0)QWidget*parent=0是新窗口部件的父窗口部件。WFlagsf=0(在可用的情况下)设置窗口部件标记

6.1QWidget类二、QWidget类使用:基础窗口部件类QWidget是最基础的窗口部件,提供了绘制自己和处理用户输入事件的基本功能,Qt提供的所有界面元素不是QWidget的子类就是与QWidget的子类相关联的。因此可以以继承QWidget或者它的子类来设计自己的窗口部件。(1)按钮部件:QAbstractButton,按钮的抽象基类,提供按钮的通用功能。包括复选框QCheckBox、标准按钮QPushButton、单选框按钮QRadioButton、QCommandLinkButton、QDialogButtonBox和工具按钮QToolButton。QAbstractButton分为两部分:按钮类和选择类

6.1QWidget类二、QWidget类使用:基础窗口部件类(1)按钮部件QAbstractButton

:如QPushButton的句柄类派生关系是:

QObject

QWidget

QAbstractButton

QPushButton

它可以代表按钮、单选纽、复选纽等重要窗口部件,通常不会直接使用QAbstractButton这个类。

6.1QWidget类二、QWidget类使用:基础窗口部件类(1)按钮部件:二、QWidget类使用:基础窗口部件类(1)按钮部件:

6.1QWidget类

6.1QWidget类二、QWidget类使用:基础窗口部件类(2)滑块部件:QAbstractSlider类提供一个区间内的整数,有一滑块调节。子类:QScrollBar滚动条、QSlider音量控制或多媒体播放进度等滑块,QDial刻度表盘。

6.1QWidget类二、QWidget类使用:基础窗口部件类(2)滑块部件:

6.1QWidget类二、QWidget类使用:基础窗口部件类(3)数值设定框部件:QAbstractSpinBox提供一个数值设定框和一个行编辑器来显示设定值。子类:QDateTimeEdit(QDateTime类)、QSpinBox(用来设置整数)和QDoubleSpinBox(用来设置浮点数)完成日期时间、整数和浮点数的设定。以上在部件栏中可以找到,使用也很简单。

6.1QWidget类二、QWidget类使用:基础窗口部件类(3)数值设定框部件:QDateTimeQDateTime*dateTime=newQDateTime(QDateTime::currentDateTime());Qstringstr=dateTime->toString("hh:mm:ss);QLabel*labelTime=newQlabel;labelTime->setText(str);

6.1QWidget类二、QWidget类使用:基础窗口部件类(4)QFrame类:带有边框的部件基类。子类:QLabel、QToolBox、QSplitter、QMenu、QProgressBar、QLCDNumber、QStackedWidget、QAbstractScrollArea。QAbstractScrollArea是所有带有滚动区域的部件类的抽象基类。Qt中带有Abstract字样的都是抽象类,不能直接使用。但可以用于继承该类实现自己的类,或用它的子类。

6.1QWidget类二、QWidget类使用:基础窗口部件类(4)QFrame类:QLCDNumber

LCDnumber=newQLCDNumber();//设置晶体管控件QLCDNumber能显示的位数

LCDnumber>setDigitCount(10);//设置显示的模式为十进制

LCDnumber->setMode(QLCDNumber::Dec);//设置显示方式

LCDnumber->setSegmentStyle(QLCDNumber::Flat);

6.1QWidget类二、QWidget类使用:基础窗口部件类例如:将时间显示在QLCDNumber时间:timer=newQTimer();timer->setInterval(1000);timer->start();信号与槽连接connect(timer,SIGNAL(timeout()),this,SLOT(onTimerOut()));槽函数QDateTimetime=QDateTime::currentDateTime();LCDnumber->display(time.toString("yyyy-MM-ddhh:mm:ss"));

6.1QWidget类二、QWidget类使用:基础窗口部件类(5)继承QWidget的子类QComboBox——下拉框QFontComboBox——字体选择框QGroupBox——带标题的组合框,一般作为容器使用。

6.1QWidget类二、QWidget类使用:复杂窗口部件类(1)QCalendarWidget类

日历控件

6.1QWidget类二、QWidget类使用:复杂窗口部件类(2)QAbstractItemView类

视图类在数据存储和显示数据库中使用主要内容132Qwidget类QWidget派生类综合应用案例

6.2QWidget派生类一、自定义窗口部件:有两种方法:1.利用现有的控件简单组合建立一个空的QWidget然后给窗体添加控件再通过布局管理器布局最后建立信号和槽连接

6.2QWidget派生类一、自定义窗口部件:有两种方法:2.通过继承QWidget类重新构建虚函数,来构造符合要求的窗口部件。实现虚函数有:与窗口部件的绘制有关的函数——paintEvent()、画笔、画刷等。需要重新实现的触发事件——鼠标单击、双击或划过等触发事件。窗口部件中的大小及布局。

6.2QWidget派生类二、自定义窗口部件案例设:1、案例需求:创建Qwidget派生类,在该派生类中添加Qlabel、QCalendarWidget、QLCDNumber等控件,显示相关的信息。

6.2QWidget派生类二、自定义窗口部件案例设:2、案例需求:手动创建一个时钟。工程包含的文件:main.cpp、clockwidget.h、clockwidget.cpp。需要的基本控件:

6.2QWidget派生类二、自定义窗口部件案例设:2、案例需求:手动创建一个时钟。主要内容132Qwidget类QWi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论