本文适用人员:本文比较长,适合不理解Qt Designer部件属性的人员阅读或资料查找。css
声明:
一、若是有人认为本文是简单的复制粘贴+翻译而成,敬请读本文最后的后记;
二、本文为老猿Python学习研究精心整理而成,禁止转载。html
引言
概述
QWidget属性列表
Qt Designer组件属性归类
组件大小及位置控制的属性
界面响应事件控制属性
信息管理属性
外观控制属性
后记python
在Qt Designer中,提供了八大类可视化组件(也称为组件或控件,下同),分别为布局组件(Layouts)、分隔组件(Spacers)、按钮组件(Buttons)、表项视图(item views)、表项组件(item widgets)、容器(Containers)、输入组件(input widgets)、显示组件(Display widgets),在Qt Designer的应用界面设计时,能够将各类功能的组件拖拽到窗口上进行应用的可视化界面设计,而每种组件又能够指定不一样的属性。程序员
组件的属性设置在Qt Designer中的组件属性编辑部分进行设置的,以下图右边部分窗口:
能够看到,将相关属性栏目节点收敛后,最顶层的节点为组件对应的类及全部父类,而且从上往下排列的节点,基本上按照父类在上,子类在下的方式排列,很好的体现了类的继承关系以及相关属性是哪一个类提供的。上图中类的属性展开后截图以下:
在Qt Designer中对八大类组件逐一浏览后,从组件的设置属性界面咱们能够看到,除了布局组件(Layouts)和分隔组件(Spacers),其余六大类组件都有共同的父类QWidget以及QObject,其中QObject 只有简单的属性objectName,而QWidget则有三十一项的设置属性,而且占了全部部件全部属性的大部分,所以组件属性的设置很大一部分就是对组件与QWidget类相关属性的设置。所以本节将详细介绍Qt Designer与QWidget类相关的组件属性的含义。web
不一样的组件类型,其与QWidget类相关属性在属性设置界面展现的属性有所区别,这是由于虽然全部属性都来自QWidget定义的属性,但不一样组件功能方面的差别致使有些属性不须要使用(如组件的标题对按钮就没有做用),所以属性设置界面把与具体组件无关的QWidget属性屏蔽了,但窗口类应该是包含了全部其余组件都会引用的QWidget属性,所以咱们接下来的介绍就是以新建窗口时选择Widget模板新建的窗口对应属性来介绍。框架
Qt Designer新建窗口时的操做界面以下:
窗口新建完成后对应的属性编辑界面截图以下:
注意:
Qt Designer中能够设置的QWidget属性比QWidget类的属性要少,只是QWidget类属性的一个子集,下表是QWidget全部属性(其中标黄色的是属性编辑界面没有的属性)。编辑器
老猿没有仔细研究这些未出如今编辑界面的属性,只是大概看了下,发现没有出现的部分属性有几种状况:ide
由于没有研究不在属性设置界面的全部属性,只是针对其中简单的看了看,并无将全部非界面属性都仔细研究,所以除了上述几种状况是否还有其余状况不能确认。svg
组件大小控制的属性有geometry 、baseSize、sizeIncrement、minimumSize、maximumSize和sizePolicy,用于控制组件的初始大小以及动态调整大小的控制。属性配置界面的geometry 定义了组件的初始大小,其余属性都与组件大小调整时控制组件的大小相关。
3.一、geometry属性
geometry属性保存组件相对于其父级对象的位置和大小,Qt其实是以一个长方形来表示组件的位置和大小的,包括左上角的坐标位置、长度和宽带。函数
当组件的geometry调整时,组件若是可见将当即接收moveEvent事件和/或调整大小事件resizeEvent事件。若是件当前不可见,则保证它在显示以前接收适当的事件。若是组件的geometry被要求调整到超出minimumSize()和maximumSize()定义的范围以外时,则Qt会强制组件的大小必须在定义的范围内。
可使用geometry()查询该属性的值,使用setGeometry(int x, int y, int w, int h)或setGeometry(QRect )设置该属性的值。与此属性关联的函数有: frameGeometry()、rect()、move()、resize()、 moveEvent()、resizeEvent()、minimumSize()和 maximumSize()。
注意:
一、 大小的计数单位都是像素,相关数字不包括窗口框架占用的位置;
二、 Qt中组件的坐标是以组件的左上角为原点、x轴向右、y轴向下的坐标体系。
3.二、baseSize属性和sizeIncrement属性
3.2.一、baseSize
组件的 baseSize是组件的基础大小(单位:像素),若是组件设定了sizeIncrement,该属性用于在调整组件尺寸时计算组件应该调整到的合适值,但这个属性缺省值是QSize(0,0),须要使用setBaseSize(int basew, int baseh)设置该值,要查询该值使用baseSize()方法。
3.2.二、sizeIncrement
sizeIncrement表示组件调整大小时的每次变化的增量大小(单位:像素)的基数,实际调整大小计算公式以下:
width = baseSize().width() + i * sizeIncrement().width()
height = baseSize().height() + j * sizeIncrement().height()
其中i,j为非负整数。
sizeIncrement的缺省值是QSize(0,0),能够调用setSizeIncrement(QSize)、setSizeIncrement(int w, int h)设置sizeIncrement,调用sizeIncrement()获取sizeIncrement的值。
注意:全部组件均可以设置sizeIncrement,但只有窗口对象会生效。
3.三、mimimumSize属性和maximumSize属性
3.3.一、mimimumSize
mimimumSize表示部件能被缩小到的最小尺寸,单位为像素,缩小到该尺寸后不能再进一步缩小了。若是部件在布局管理器中,且布局管理器也设置了最小尺寸,则部件自己的最小尺寸以部件的mimimumSize为准,布局管理器设置的不起做用。
部件的最小尺寸能够调用方法setMinimumSize(QSize)或setMinimumSize(int minw, int minh)进行设置,使用minimumSize()返回当前值,若是值被设置为QSize(0,0)则表示最小尺寸无效。
3.3.二、maximumSize
maximumSize表示部件能被放大到的最大尺寸,放大到该尺寸后不能再进一步放大了。部件的缺省最大值为QSize(16777215,16777215)
部件的最大尺寸能够调用方法setMaximumSize(QSize)或setMaximumSize(int maxw, int maxh)进行设置,使用maximumSize()返回当前值,部件的最大值不能超过系统设置部件的最大值常量QWIDGETSIZE_MAX 。
3.四、sizePolicy属性
部件的sizePolicy属性用于说明部件在布局管理中的缩放方式,当部件没有在布局管理器中时,该设置无效。
在理解sizePolicy前,先介绍两个Qt内置的部件属性sizeHint和minimumSizeHint,分别表示部件的缺省大小、minimumSizeHint建议最小尺寸。
一、sizeHint:为布局管理器中部件的缺省大小,若是部件不在布局管理中就为无效的值,该值是Qt中对每一个部件大小的建议值,也是缺省值,不能修改;
二、minimumSizeHint:为Qt推荐的部件最小大小,若是部件不在布局管理中就为无效的值,在布局管理器中minimumSizeHint 就是部件的缺省最小值,除非当前部件的大小策略为QSizePolicy.Ignore或者minimumSize被设置,布局管理器不会调整一个部件的大小到比minimumSizeHint 返回值更小的大小。
sizePolicy由四个值组成,分别是水平缩放策略、垂直缩放策略、水平伸缩因子、垂直伸缩因子。
一、缩放策略
水平缩放策略、垂直缩放策略的值都是枚举类型Policy,该枚举类型的取值及含义以下:
其中,相关值内的常量由枚举类型 QSizePolicy.PolicyFlag定义,对应取值及含义以下:
二、伸缩
界面响应事件控制属性是指针对组件对键盘、鼠标事件以及平板触控笔的事件响应的控制,它包括acceptDrops、contextMenuPolicy、cursor、enabled、focusPolicy、inputMethodHints、mouseTracking、tabletTracking、windowModality、windowTitle这9个属性。
4.一、enabled属性
enabled属性很是简单,最开始老猿没准备介绍该属性的,由于你们都应该知道,但仔细看了看官网文章,以为仍是有些细节可能不多有人注意到,所以仍是在此介绍一下。
enabled属性用于表示部件是否可用,一个可用的部件能够接收和处理鼠标和键盘事件,当部件不可用时则没法接收和处理鼠标和键盘事件。
有些部件在被禁用时会以不一样的方式显示本身。例如,按钮可能会将其标签灰显。若是部件须要知道它什么时候被启用或禁用,则可使用changeEvent()方法来捕获事件,事件类型设置为QEvent.EnabledChange。
禁用一个部件时会隐式禁用其全部子部件,启用部件时将顺序启用全部子部件,除非子部件已被显式禁用。当父部件保持禁用状态时,不可能显式启用不是窗口的子部件。
enabled属性缺省值为True,能够 经过isEnabled()访问部件的启用状态,经过setEnabled(bool)设置部件的启用状态。
4.二、acceptDrops属性
acceptDrops属性表示当前部件是否接受鼠标拖放事件,鼠标拖放应该是与鼠标拖拽结合在一块儿的,在Qt Designer中能够经过属性acceptDrops设置部件是否接受鼠标拖放事件。若是部件接受拖放,则在鼠标拖放时,拖放事件会发送给鼠标当前光标下接受拖放的第一个部件。
若是一个部件设置了acceptDrops属性为True,则就是通知系统该部件可能接受鼠标拖放事件。
注意:
一、若是当前部件是一个桌面(windowType() == Qt.Desktop), 若是此时另外一应用正在使用桌面则这个属性设置可能失败;
二、不要在拖、放事件的处理方法中修改该属性。
使用acceptDrops()获取当前部件是否支持拖放;使用setAcceptDrops(bool on)设置当前部件是否支持拖放。
4.三、contextMenuPolicy属性
contextMenuPolicy为部件的快捷菜单策略,快捷菜单经过在部件上点击鼠标右键触发。
快捷菜单策略经过枚举类型Qt.ContextMenuPolicy来定义,对应枚举类型取值及含义以下:
经过contextMenuPolicy() 能够获取当前部件的快捷菜单策略;经过setContextMenuPolicy(Qt.ContextMenuPolicy policy)能够设置当前部件的快捷菜单策略。
4.四、focusPolicy属性
在Qt Designer中能够设置部件的焦点策略,部件的焦点策略属性取值范围由枚举类型Qt.FocusPolicy来定义,该枚举类型及其含义以下表所示:
部件能够经过focusPolicy()能够获取当前部件的焦点策略,经过setFocusPolicy(Qt.FocusPolicy policy)设置焦点策略。
4.五、mouseTracking和tabletTracking属性
mouseTracking和tabletTracking这两个属性是跟踪鼠标或平板触控笔的移动轨迹的。
4.5.一、mouseTracking
mouseTracking属性用于保存是否启用鼠标跟踪,缺省状况是不启用的。没启用的状况下,对应部件只接收在鼠标移动同时至少一个鼠标按键按下时的鼠标移动事件,启用鼠标跟踪的状况下,任何鼠标移动事件部件都会接收。
部件方法hasMouseTracking()用于返回当前是否启用鼠标跟踪,setMouseTracking(bool enable)用于设置是否启用鼠标跟踪。与鼠标跟踪相关的函数主要是mouseMoveEvent()。
4.5.二、tabletTracking
tabletTracking属性保存是否启用部件的平板跟踪,缺省是不起用的。没有启用平板跟踪的状况下,部件仅接收触控笔与平板接触或至少有个触控笔按键按下时的触控笔移动事件。
若是部件启用了平板跟踪功能,部件能接收触控笔靠近但未真正接触平板时的触控笔移动事件,这能够用于监视操做位置以及部件的辅助操做功能(如旋转和倾斜),并为图形界面提供这些操做的信息接口。
部件方法hasTabletTracking()用于返回当前是否启用平板跟踪,setTabletTracking(bool enable)用于设置是否启用平板跟踪。与平板跟踪相关的函数主要是 tabletEvent()。
4.六、inputMethodHints属性
inputMethodHints属性只对输入部件有效,输入法使用它来检索有关输入法应如何操做的提示,例如,若是设置了只容许输入数字的标志,则输入法可能会更改其可视组件,以反映只能输入数字。相关取值及含义以下:
输入提示是多种值的组合,多个值之间经过或操做组合。
若是几个独占标志被放在一块儿,则生成的字符集将由指定集的并集组成。例如,指定ImhNumbersOnly 和ImhUppercaseOnly 将产生一个由数字和大写字母组成的集合。
该属性缺省值为Qt.ImhNone,可经过inputMethodHints() 和setInputMethodHints(Qt.InputMethodHints )进行访问和修改。
注意:
一、 修改时最好先取到当前设置,再与要修改值进行或后再设置;
二、 该属性仅做为一个输入提示,并非全部输入法都会支持,老猿验证了几个中文输入法好像都不支持。
老猿认为该属性没有多大用途,一是由于输入法不必定支持,二是由于并不能严格限制输入数据。
4.七、cursor属性
部件的cursor属性保存该部件的鼠标光标形状,当鼠标位于该部件上时就会呈现该属性设置的光标形状,对应类型为枚举类型Qt.CursorShape,可取值的范围及含义以下:
注意:
一、上述列表中,最后4个取值在Designer中没有,这是由于这4个取值不是在属性编辑中静态设置的,而是在运行时调整的;
二、上述列表中英文和译文都列出的是老猿花时间比较多的取值解释,但仍是怕翻译得不够准确,因此列出英文进行对照。
4.八、windowModality属性
windowModality属性只对窗口对象有效,保存的是哪些类型的窗口被模式窗口阻塞。
模式窗口防止其余窗口中的部件获取输入。此属性的值控制对应窗口可见时阻塞哪些类型的窗口获取输入。在模式窗口可见时更改此属性无效,必须先调用hide()隐藏模式窗口,而后再调用show()显示模式窗口。
相关取值及含义以下:
信息管理属性包括accessibleDescription、accessibleName、statusTip、toolTip、toolTipDuration、whatsThis、locale、windowFilePath、windowTitle这9个属性,这些属性与帮助、提示、窗口标题、残障人士辅助信息、语言国际化支持等方面,都与应用呈现给用户的文本信息有关,所以老猿将其归类到信息管理。
5.一、locale国际化支持
locale属性用于设置语言环境,包括语言和国家。若是一个部件没有设置语言环境,则使用父对象的语言环境或者默认语言环境(若是部件是顶层部件)。
可使用locale()获取部件的语言环境,也能够经过 setLocale(QLocale )设置部件的语言环境,还能够经过unsetLocale()取消部件的语言环境设置。
5.二、 translatable、 disambiguation和comment子属性
每一个显示的文本信息包括Label的文本、按钮的文本等、以及输入控件的输入内容、帮助信息的文本等均可以在部件属性编辑中设置国际化子属性,如:
它们都有三个子属性,分别是translatable、 disambiguation和comment,这三个属性的含义分别以下:
一、translatable可译:表示对应属性文字不用翻译成其余语言;
二、disambiguation消除歧义:这是当有多个须要翻译文字的对象有相同文字时,避免出现歧义而额外添加的消除歧义字符,缺省为空,通常歧义字符设置为其所在对象对应类的名字,此消歧参数是为转换器指定注释的首选方法。
三、comment注释:添加注释用于辅助对属性文字的翻译,注释将在翻译属性文字时传递到翻译的函数tr()中并与须要翻译对象关联,这样会有助于理解翻译的文字含义。
对于国际化,老猿没有研究过,也不许备去研究,之因此列这三个属性的国际化属性,纯粹是由于才开始老猿对这三个属性不知道,而且基本上查不到资料。没接触过的人看到这会一头雾水,所以经过各类方法查阅了不少资料,结合各类资料以及本身的理解单独在此解释一下,可能不彻底正确。这这部份内容,无需国际化的人不须要关注,须要国际化的人则须要另外专门研究。
5.三、toolTip、toolTipDuration、statusTip、whatsThis属性
这几个属性与帮助和提示信息相关,除了toolTipDuration外,都有国际化设置的子属性。
5.3.一、toolTip属性
toolTip属性设置部件的toolTip提示信息,toolTip提示信息在鼠标放到控件上会浮动出一个小框显示提示信息。默认状况下,仅显示活动窗口子部件的toolTip,能够经过在窗口对象设置Qt.WA_AlwaysShowToolTips属性来改变,但不能是须要显示tooTip的部件对象中设置。
若是要控制tooTip显示的行为(如控制显示位置),能够重写部件的event()方法捕获事件类型为QEvent.ToolTip的事件。
缺省值为空,能够经过toolTip()和setToolTip( QString )来读取和设置toolTip。
5.3.二、toolTipDuration属性
toolTipDuration 属性控制toolTip显示的时长,单位是毫秒,若是设置为-1,则显示时长根据toolTip内容的长度来计算。
toolTipDuration 缺省值为-1,能够经过toolTipDuration ()和settoolTipDuration ( int msec)来读取和设置toolTipDuration 。
5.3.三、statusTip属性
statusTip属性保存statusTip提示信息,statusTip提示信息在鼠标放到控件上时在窗口的状态栏显示提示信息,若是窗口无状态栏则不显示。
statusTip属性 缺省值为空字符串,能够经过statusTip()和setstatusTip ( QString )来读取和设置statusTip。
5.3.四、whatsThis
whatsThis属性保存部件的帮助信息。whatsThis的帮助信息通常在部件得到焦点后按Shift+F1弹出显示,若是这个快捷键被别的功能占用,则whatsThis的帮助信息可能没法展现。有些对话窗提供一个带问号的按钮能够点击显示whatsThis的帮助信息。
whatsThis属性 缺省值为空字符串,能够经过whatsThis()和setwhatsThis ( QString )来读取和设置whatsThis。
5.四、accessibleDescription和accessibleName辅助阅读属性
accessibleDescription和accessibleName属性都是用于残疾人辅助阅读的,这两个属性都有国际化属性。
5.4.1 accessibleName属性
这是辅助阅读中显示的部件的名称,对于大多数小部件,无需设置此属性,由于Qt会调用部件相关属性显示,如按钮将显示按钮的文本,但当小部件不提供任何文本时,设置此属性很重要。例如,只包含图标的按钮须要将此属性设置为与屏幕阅读器一块儿使用。
此属性默认为空,经过accessibleName() 和setAccessibleName(QString )能够对该属性进行查询和设置。
5.4.2 accessibleDescription属性
此属性保存辅助技术所看到的部件描述,是对accessiblename的补充说明。
此属性默认为空,经过accessibleDescription () 和setAccessibleDescription (QString )能够对该属性进行查询和设置。
5.五、windowTitel属性
windowTitle仅对window和dialog类型的对象生效。
windowTitle是窗口的标题,能够经过windowTitle() 、setWindowTitle(const QString &)进行读取和设置。
5.六、windowFilePath属性
windowFilePath属性仅对窗口对象有效,用于关联一个窗口和对应的文件及路径。
当窗口没有设置标题属性的状况下,则窗口标题展现展现windowFilePath对应的文件名的信息(路径信息不展现),若是两者都设置,则优先使用窗口标题属性的设置做为标题。
该属性缺省为空,能够经过windowFilePath()和setWindowFilePath(QString )来访问和设置windowFilePath属性。
这个功能在窗口打开文件进行操做时可使用来标记打开的文件。
注意该属性有国际化设置的子属性。
外观控制属性包括autoFillBackground、font、layoutDirection、palette、styleSheet、windowIcon、windowOpacity这七个属性,基本都与部件的外观相关。
6.一、palette属性和字体font属性设置
在Qt Designer的部件属性中,有个部件调色板(palette)的属性,进入后,以下图所示:
Qt中提供的调色板palette用于管理控件的一组外观显示设置组成,组中每条记录包括颜色角色、颜色组、具体颜色,对应PyQt中的QPalette类。QPalette类至关于对话框或控件的调色板,管理着控件和窗体的全部颜色。
6.1.一、color role颜色角色
上图中蓝色标记的color role颜色角色是指界面中颜色对应的部分界面外观组合,又称为颜色职责,即对应界面中哪些部分使用指定某个颜色。经过枚举变量QPalette.ColorRole来定义,取值及其含义以下:
6.1.二、颜色组ColorGroup
颜色组是指对应同一外观组合在活动状态(active,指得到焦点 ) 、非活动状态(inactive,未得到焦点但能够得到焦点的状态 )、禁止状态(disable,不能得到焦点 )时的对应颜色。上图中只有active 状态的,其余两种状态颜色是电脑根据规则计算出来的,若是要查看或者设置颜色组的三种状态,在上图中选择“show details”便可,以下图:
上面两个截图中的预览窗口是调整调色板的设置后对一个做为案例的窗口外观影响的预览。
6.二、字体设置
在Qt Designer中部件的Font属性中能够设置对应部件的字体属性,包括字体的字体簇(Family)、大小(Size)、是否粗体(Bold)、是否斜体(Italic)、是否带下划线(Underline)、是否带删除线(Strikeout)、是否调整字符间距(Kerning,调整字形间距,且基本上是英文字符形状的间距,由于英文字符形状都是不规则的,有宽有窄,有的圆乎乎,有的棱角分明,就会致使排列在一块儿的时候疏密不一致,而kerning能够有效利用字符形状间的间隙,使字形之间的空间更加类似)、是否反走样抗锯齿(Antialiasing,请参考《QT QPainter::antialiasing QPainter::textAntialiasing 反走样、抗锯齿探究》)这些属性。
注意:若是Qt Style Sheets与setFont()在同一个部件上使用,则若是设置冲突,样式表将优先。
6.三、windowIcon属性
windowIcon对象为部件对象的属性,但只有窗口对象有效,其余派生对象如pushButtong对象无效。
在windowIcon对象上有以下子属性设置:
这几个子属性其实是QIcon类中继承的。它们的含义以下:
6.3.一、Theme(图标主题):图标主题是一组具备相同外观和感受的图标,从程序员的角度来看,图标主题只是一个映射。给定一组要在其中查找图标的目录和一个主题名称,它将图标名称和标称图标大小映射到图标文件名。
关于图标主题的内容老猿没有弄清楚,猜想多是图标文件和目录以及大小有套规范,而后对应用指定主题,就能够在主题对应目录自动按照规范查找对应的图标。
有几个网址能够参考一下:
《Icon Naming Specification》https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html
《Icon Theme Specification》https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
6.3.二、Normal off…Selected On
上图中所示的Normal off到Selected On这8个子属性应该是QIcon的两个属性的组合,分别指定部件在这8种状态下使用哪一个图标。这两个属性分别是QIcon的以下两个枚举类型成员:
一、enum Mode { Normal, Disabled, Active, Selected }
四个值分别表示:
1)QIcon.Normal:部件为使能状态,但未激活,没有得到焦点。
2)QIcon.Disabled:部件为禁用状态。
3)QIcon.Active:部件为激活状态,得到了焦点(如鼠标悬停在上面,或Tab键移动焦点)。
4)QIcon.Selected:部件被选中。
当部件的状态切换时,默认的图标绘制函数会自动根据部件的状态重绘图标。
二、enum State { Off, On }
某些部件还有所谓的开关状态(好比一个按钮能够有按下和弹起两个状态),则还能够根据 state 参数来选择不一样的图像。
所以上述两个类型的组合对应了8种状态就是Designer图标的8个子属性。
注意:若是theme设置了,则优先使用theme去加载图标,只有找不到的状况下才使用下面每种状态的图标。
6.四、windowOpacity属性
这个属性仅对window对象生效。
windowOpacity为浮点数,表示透明度,为1彻底不透明,为0彻底透明,缺省是1。
能够经过windowOpacity()、setWindowOpacity(qreal level)进行读取和设置。
6.五、layoutDirection属性
layoutDirection属性保存的是部件的布局方向,有三个取值:
在部件上设置布局方向时,它将传播到部件的子级,但不会传播到做为窗口的子级,也不会传播到已显式调用setLayoutDirection()的子级。此外,为父级调用setLayoutDirection()以后添加的子部件不会继承父级的布局方向。
在Qt Designer中修改了一个部件的布局方向时,全部未单独设置布局方向的子部件的布局方向所有跟随调整,单独设置了不跟随调整。
注意:
一、自qt 4.7以来,此方法再也不影响文本布局方向;
二、此属性调整只影响布局内的部件排列,不影响绝对部件的部件排列;
三、布局方向调整在Designer设计时当即生效,无需到运行时。
案例:
一、 以下图,窗口布局类型为从左到右,下面六个按钮的排列显示为:
二、 调整窗口的布局方向为从右到左,则六个按钮的排列显示为:
能够看到一、 二、3号三个按钮因为是绝对布局,两种排列方向其界面上的顺序没有变化,而四、 五、 6在布局中,两种排列方向的按钮顺序颠倒了。
请注意:窗口的主菜单也靠右排列了。
6.六、 autoFillBackground属性
autoFillBackground属性能够确认部件背景是否自动填充,若是自动填充,Qt会在调用Paint事件以前填充部件的背景。使用的颜色由部件调色板中的QPalette.window 颜色角色定义。
此外,除非设置了WA_OpaquePaintEvent 或 WA_NoSystemBackground属性,不然窗口始终使用QPalette.Window对应颜色填充。
若是部件的父级对象背景具备静态渐变,则没法关闭此属性(即不能设置为False)。
警告:在使用Qt Style Sheets时请当心使用此属性。当部件具备具备有效背景或边框图像的样式表时,此属性将自动禁用。
默认状况下,此属性为False。
可使用autoFillBackground()和setAutoFillBackground(bool enabled)对该属性进行读取和设置。
6.7 styleSheet属性
styleSheet属性是定义部件外观的属性样式表,在Qt中styleSheet样式表是相似于html的css样式同样的方法,只是时专门为Qt中的部件开发的。styleSheet的定义语法也是相似CSS,而且是跨平台支持的。
因为每一个部件均可以定义本身的样式,也能够经过QApplication.setStyleSheet()在整个应用程序上设置样式。若是在不一样级别设置了多个样式表,qt将从全部设置的样式表中派生出有效的样式表。这叫作样式级联。
6.7.一、Qt Designer中定义样式
在部件的styleSheet属性中,点击属性进入属性设置,会出现以下内容:
点击省略号的按钮,则进入样式编辑器:
6.7.二、styleSheet样式表
样式表由一系列样式规则组成。样式规则由选择器和声明组成。选择器指定哪些部件受规则影响;声明指定应在部件上设置哪些属性。如:
QPushButton { color: red }
在上面这个样式规则中,QPushButton 是选择器,{ color: red }就是声明,表示全部QPushButton 按钮及其派生类对象的文本颜色设置为红色。若是该规则样式表应用在窗口上,则窗口上全部没有指定styleSheet的pushButton部件的文字颜色会显示为红色,经过styleSheet指定了color的则按本身指定颜色显示。
上述截图的窗口定义了样式:QPushButton { color: red },而PushButton3则定义了样式:QPushButton { color: blue},所以展现效果如上。
注意:在Qt样式定义语句中,一般状况下是大小写均可以,但类名、对象名和Qt属性名是大小写敏感的。
所以QPushButton { color: red },也能够写成:QPushButton { Color: Red }、QPushButton { COLOR: RED}、QPushButton { Color: REd}等形式,但不能写成qpushbutton { color: red }、QPUSHBUTTON { color: red }等形式。
关于Qt样式表的详细语法规则请见Qt文档官网《The Style Sheet Syntax》。
可使用styleSheet() 、setStyleSheet(QString )来获取或设置部件的样式表。
终于将Qt Designer中与QWidget类相关的属性介绍完了,从9月下旬开始学习PyQt的GUI程序开发,刚使用Qt Designer设计GUI界面时,对于桌面上那么多控件一个个都不了解,处处找资料,基本没有全面介绍界面控件的,单个的控件有些能找到一些内容,但都不够详细,有些根本就没有。后来终于找到了Qt文档官网的地址(https://doc.qt.io/qt-5/reference-overview.html),能解决将近80%的问题,但可能还有20%的问题解决不了,这20%总结来包括以下一些方面:
一、 在国内相对冷门且很差验证的知识,如国际化、输入法提示等;
二、 一些多是常识性的东西,没有人解释,官网上也没有,但就是不理解,如焦点策略的鼠标滚轮得到焦点必选是鼠标已经在控件之上才行、what’s this怎么触发;
三、 一些英文怎么翻译才好理解,如本节部分表格中有中英文对照的内容、Dock Wigdet是否该翻译成停靠部件等;
四、 还有一些验证时有时不成功有时不能成功的,如布局控件内部件的从右往左对齐方向对主窗口菜单的影响试了几回有不一样的效果,也不知道缘由。
好歹通过多方查找各类资料、测试验证,绝大部分问题都弄清楚了,可能还有极个别的没有彻底理解透彻。从9月下旬开始,断断续续的未来源于QWidget类且在Qt Designer中属性编辑可见的属性的功用逐个再次总结记录下来,又花了三天时间整理成本文的内容,并将这些属性进行了分类。所以本文绝对不是简单的翻译或资料汇聚,是老猿先后花了近20天心血研究、整理的产物,还有少数几个细节问题没有彻底弄透彻,但就总体来讲,对初学者应该是基本够用了,但愿帮助到你们。
博客地址:https://blog.csdn.net/LaoYuanPython
老猿Python博客文章目录:http://www.javashuo.com/article/p-cwbwcpul-ct.html