【Qt】QWidget中的常见属性及其功能(一)
目录
一、 enabled
例子:
二、geometry
例子:
window fram
例子 :
四、windowTiltle
五、windowIcon
例子:
qrc机制
创建qrc文件
例子:
qt中的很多内置类都是继承自QWidget的,因此熟悉QWidget的常见属性及其功能是非常有用的。
一、 enabled
设置控件是否可以使用。true表示可以使用;false表示不可以使用。
例子:
有两个按钮,点击第一个按钮后窗口标题发生改变,点击第二个按钮会使第一个按钮在可使用和不可使用状态之间切换。
API:
isEnabled():获取控件是否可用,可用返回true,不可用返回false。
setEnabled(bool enable):设置控件的可用与不可用状态的。
注意:如果一个Widget(控件)被禁用那么这个控件中的子元素也会被禁用。
二、geometry
设置控件的位置和尺寸。
x:横坐标。y:纵坐标。width:宽度。height:高度。
geometry():获取到控件的位置和尺寸,返回一个QRect类型的对象,QRect中包含:x、y、width、height。其中x,y是控件左上角相对于父控件的坐标。
setgeometry(QRect)或setgeometry(int x,int y,int width,int height):设置控件的位置和尺寸,通过QRect设置,也可以分四个属性单独进行设置。
例子:
创建五个按钮,通过点击后四个按钮对第一个按钮进行上下左右平移。
注意:如果使用通过向setGeometry()传入QRect类来设置控件位置而不是通过分四个属性单独进行设置,那么如果改变QRect中的y则QRect中的heigt也会改变。比如QRect中的下x()+5那么QRect中的width()会-5,如果通过该方法改变控件位置必须对QRect中的height()或width()也要操作。如上图中注释的代码块。
window fram
如果Widget(控件)作为一个窗口(带有标题栏、最大化、最小化、关闭按钮),那么计算该Widget就有两种情况:不包含window frame、不包含window frame。
其中Geometry()和frameGeometry()都会一个QRect,表示控件的位置和尺寸。
Geometry()返回的QRect不包含window frame。
frameGeometry()返回的QRect包含window frame。
注意:调用窗口Widget的frameGeometry()或Geometry()返回的QRect中的x,y坐标值都是相对于电脑屏幕左上角的位置。如果在窗口中创建一个按钮,然后调用按钮的frameGeometry()或Geometry()返回的QRect类型对象都是一样的,因为按钮控件没有framewindow。
例子 :
先在窗口Widget构造函数中打印该窗口控件分别调用frameGeometry()和Geometry()返回的QRect对象,然后点击窗口控件中的一个按钮,在控制台终端打印该窗口控件分别调用frameGeometry()和Geometry()返回的QRect对象。
可以看到在构造函数中得到的窗口Widget的QRect是一样的,但是点击按钮后,在槽函数中打印出的QRect不一样。这是因为在构造函数中窗口Widget刚刚创建出来,还没有挂到对象树上,也就没有frame window,调用槽函数时窗口Widget已经挂在了对象树上因此就有了frame window。
四、windowTiltle
设置窗口标题。
windowTitle():获取窗口控件的标题。
setWindowTitle(const QString& title):修改窗口控件的标题。
注意:如果是窗口Widget调用才会有效果,其他子Widget(窗口中的其他控件)这个操作无任何效果。
五、windowIcon
设置窗口图标。
windowIcon():获取控件的窗口图标,返回QIcon类型对象。
setwindowIcon(const QIcon& icon):设置控件的窗口图标。
例子:
更改窗口Widget的图标为c盘中的一个笑脸图片,创建一个Icon类型的对象里面是图片的路径,然后调用setWindowIcon。
上面这种是采用绝对路径的方式定位图片资源的。
qrc机制
qrc解决了两个问题:
1.确保开发者的图片资源所在的路径在用户机器上存在。
2.确保图片资源不会被用户弄丢。
给qt项目引入一个qrc文件,该文件是一种XML格式的资源配置文件,该文件记录了qt程序中需要用到的资源及资源名称,在qt编译项目的时候就会根据qrc中所记录的资源,然后把需要用到的资源的二进制数据转换成C++代码,最终编译到exe可执行文件中,从而使依赖的资源变得与路径无关。
注意:路径名和文件名中避免有汉字或特殊符号。向qrc文件中导入资源文件时,必须确保要被导入得资源文件必须在qrc文件得同级目录,或者同级目录中得子目录里。
创建qrc文件
1.在一个已经创建好得qt项目中点击新建文件或项目,然后选择Qt Resource File
2.自定义qrc文件名
3.添加qt寻找资源时的虚拟前缀(其实是一个虚拟目录)
该前缀可以自己定义,但一般都是一个正斜杠/
4.向qrc文件中导入资源文件
例子:
点击按钮一时窗口图标变为smallface,点击按钮二窗口图标变为listenmusic。