Qt C++ :QWidget类的主要属性和接口函数
文章目录
- QWidget作为界面组件时的属性
- QWidget作为窗口时的属性
- QWidget 的其他接口函数
QWidget
是所有界面组件类的基类。
QWidget
定义的一些属性、接口函数、信号和槽是所有界面组件共有的。了解了QWidget的基本特性,通常就能了解界面组件的通用特性。
QWidget作为界面组件时的属性
在QtDesigner中设计界面时,在窗体上放置一个QWidget组件,属性编辑器里会显示QWidget组件的属性。
一个属性一般有一个读取函数和一个设置函数,例如属性font的读取函数是font()
,设置函数是setFont()
,根据属性名称就大致能写出读取函数和设置函数名称。
属性名称 | 属性值类型 | 功能 |
---|---|---|
enabled | bool | 组件的使能状态,enabled为true时才可以操作组件 |
geometry | QRect | 组件的几何形状,表示组件在界面上所占的矩形区域 |
sizePolicy | QSizePolicy | 组件默认的布局特性,这个特性与组件的水平、垂直方向尺寸变化有关 |
minimumSize | QSize | 组件的最小尺寸,QSize包含width和 height 两个属性 |
maximumSize | QSize | 组件的最大尺寸 |
palette | QPalette | 组件的调色板,调色板定义了组件一些特定部分的颜色,如背景色、文字颜色等 |
font | QFont | 组件使用的字体。QFont定义了字体名称、大小、粗体、斜体等特性 |
cursor | QCursor | 鼠标光标移动到组件上时的形状 |
mouseTracking | bool | 若设置为true,只要鼠标在组件上移动,组件就接收鼠标移动事件:否则,只有在某个鼠标键被按下时,组件才接收鼠标移动事件 |
tabletTracking | bool | 是否开启平板跟踪,默认值是false,表示只有当触笔与平板计算机接触时,组件才接收平板事件 |
focusPolicy | Qt:FocusPolicy | 组件的焦点策略,表示组件获取焦点的方式 |
contextMenuPolicy | Qt:ContextMenuPolicy | 组件的上下文菜单策略,上下文菜单是指在组件上点击鼠标右键时弹出的快捷菜单 |
acceptDrops | bool | 组件是否接收拖动来的其他对象 |
toolTip | QString | 鼠标移动到组件上时,在光标处显示的简短提示文字 |
statusTip | QString | 鼠标移动到组件上时,在主窗口状态栏上临时显示的提示文字,显示2秒后自动消失 |
autoFillBackground | bool | 组件的背景是否自动填充,如果组件使用样式表设定了背景色,这个属性会被自动设置为 false |
styleSheet | QString | 组件的样式表。样式表用于定义界面显示效果 |
组件的sizePolicy属性是QSizePolicy
类型,它定义了组件在水平和垂直方向的尺寸变化策略。
Horizontal Policy表示组件在水平方向的尺寸变化策略,Vertical Policy表示组件在垂直方向的尺寸变化策略,其值都是枚举类型QSizePolicy::Policy
,各枚举常量的含义如下。
QSizePolicy:Fixed
:固定尺寸,QWidget 的sizeHint()
函数返回组件的建议尺寸作为组件的固定尺寸,即便使用了布局管理,组件也不会放大或缩小。QSizePolicy:Minimum
:最小尺寸,组件缩小到最小尺寸之后就不再缩小。使用sizeHint()
函数的返回值作为最小尺寸,或使用minimumSize属性设置的值作为最小尺寸。QSizePolicy:Maximum
:最大尺寸,组件放大到最大尺寸之后就不再放大。使用sizeHint()
函数的返回值作为最大尺寸,或使用maximumSize属性设置的值作为最大尺寸。QSizePolicy:Preferred
:首选尺寸,使用sizeHint()
函数的返回值作为最优尺寸,组件仍然可以缩放,但是放大时不会超过sizeHint()
函数返回的尺寸。QSizePolicy:Expanding
:可扩展尺寸,sizeHint()
函数的返回值是可变大小的尺寸,组件可扩展。QSizePolicy::MinimumExpanding
:最小可扩展尺寸,sizeHint()
函数的返回值是最小尺寸,
组件可扩展。QSizePolicy:Ignored
:忽略尺寸,sizeHint()
函数的返回值被忽略,组件占据尽可能大的空间。
在使用尺寸策略时,QWidget
的sizeHint()
函数会起到很大作用,在组件的父组件尺寸变化时,sizeHint()
返回组件的建议尺寸。
组件的
sizePolicy
属性有默认值,例如,QLineEdit
的水平策略是Expanding
,垂直策略是Fixed
,也就是水平方向可扩展,垂直方向是固定尺寸;QTextEdit
的水平策略是Expanding
,垂直策略是Expanding
,也就是水平方向和垂直方向都是可扩展的。
QWidget作为窗口时的属性
QWidget
可以作为独立的窗口,其子类QMainWindow
、QDialog
也是常用的窗口类。QWidget
作为窗口时有一些与窗口相关的属性。
属性 | 属性值类型 | 功能 |
---|---|---|
windowTitle | QString | 窗口标题栏上的文字,若要利用windowModified属性,需要在标题文字中设置占位符“[*]” |
windowIcon | QIcon | 窗口标题栏上的图标 |
windowOpacity | qreal | 窗口的不透明度,取值范围是0.0~1.0。0.0表示完全透明,1.0表示完全不透明。默认值是1.0 |
windowFilePath | QString | 窗口相关的含路径的文件名,这个属性只在Windows平台上有意义,如果没有设置windowTitle属性,程序将自动获取不含路径的文件名作为窗口标题 |
windowModified | bool | 表示窗口里的文档是否被修改,若该属性值为true,窗口标题中的占位符“[*]” 会显示为“+” |
windowModality | Qt:WindowModality | 窗口的模态,这个属性只在Windows平台上有意义,表示窗口是否处于上层 |
windowFlags | Qt:WindowFlags | 窗口的标志,是枚举类型Qt:WindowFlag 的一些值的组合 |
QWidget 的其他接口函数
当QWidget作为独立的窗口时,有如下一些与窗口显示有关的公有槽函数。
bool close () //关闭窗口
void hide () //隐藏窗口
void show () //显示窗口
void showFullScreen () //以全屏方式显示窗口
void showMaximized () //窗口最大化
void showMinimized () //窗口最小化
void showNormal() //全屏、最大化或最小化操作之后,恢复正常大小显示
QWidget中定义的信号只有3个,定义如下:
void customContextMenuRequested(const Qpoint &pos)
void windowIconChanged (const QIcon &icoa)
void windowTitleChanged (const QString &titlo)
其中,customContextMenuRequested()
信号是在组件上点击鼠标右键时被发射的,一般用于创建组件的快捷菜单。
QWidget
类还定义了大量与事件处理相关的函数,后续详细介绍事件处理。