Qt样式表(3):样式表的其他属性
若对C++语法不熟悉,建议参阅《C++语法详解》一书,电子工业出版社出版,该书语法示例短小精悍,对查阅C++知识点相当方便,并对语法原理进行了透彻、深入详细的讲解。
注:类型为属性可取值的“属性类型”(注意:不是Qt类型,属性类型及可取值见13.9.6节)
本小节把border也翻译为边框,因此需注意与frame(边框)的区别,可把border译为边界
13.9.1 与背景色、前景色、所选文本颜色相关的属性(见表13-26)
示例13.13:使用样式表设置部件的背景色(效果见图13-25)
#include<QtWidgets>
int main(int argc, char *argv[]){ QApplication aa(argc,argv);
QWidget w;
aa.setStyleSheet(
//背景色为红色,背景图片为1i.png。注意为属性指定多个值的方法
"QWidget{background: red url(F:/1i.png);"
"background-repeat: repeat-y;" //在y轴方向重复图片
"background-position: right;}"); //图片位于部件右侧
w.resize(300,200); w.show(); return aa.exec(); }
13.9.3 与位置和大小有关的属性
1、subcontrol-origin 类型:Origin //子控件的原点矩形,默认为padding。
2、subcontrol-position 类型:Alignment
子控件在subcontrol-origin属性指定的矩形内的对齐方式,默认值取决于子控件
3、position 类型:relative | absolute
使用left、right、top、bottom属性的偏移是相对坐标还是绝对坐标。默认为relative(相对的)
4、spacing 类型:Length
部件的内部间距(比如复选按钮和文本之间的距离),默认值取决于当前样式
以下类支持此属性:QCheckBox,可选中的QGroupBox,QRadioButton,QMenuBar
5、bottom 类型:Length
left 类型:Length
top 类型:Length
right 类型:Length
以bootom属性为例(其余属性类似),若position属性是relative(相对的,默认值),则将子控件向上移动一偏移量,若position是absolute(绝对的),则bottom属性是指与子控件的下边缘的距离,该距离与subcontrol-origin属性有关。此属性默认值为0。
6、height 类型:Length
width 类型:Length
子控件的高度/宽度,默认值取决于当前样式,注意:除非另有规定,否则在部件上设置此属性无效,若想要部件有一个固定的高度,应把min-height和max-height设置为相同的值,宽度类似。
7、max-height 类型:Length
max-width 类型:Length
部件或子控件的最大高度/宽度,以上值相对于盒子模型的内容矩形
以下类支持此属性:
QAbstractItemView子类,QAbstractSpinBox子类,QCheckBox,QComboBox,QFrame,QGroupBox,QLabel,QPushButton,QRadioButton,QSizeGrip,QSpinBox,QSplitter,QStatusBar,QTextEdit,QToolTip,QLineEdit,QMenu,QMenuBar,(注意:没有QDialog和QWidget)
8、min-height 类型:Length
min-width 类型:Length
部件或子控件的最小高度/宽度,默认值依赖于部件的内容和样式,该值相对于盒子模型的内容矩形
以下类支持此属性:
QAbstractItemView子类,QAbstractSpinBox子类,QCheckBox,QComboBox,QFrame,QGroupBox,QLabel,QPushButton,QRadioButton,QSizeGrip,QSpinBox,QSplitter,QStatusBar,QTextEdit,QToolTip,QLineEdit,QMenu,QMenuBar,(注意:没有QDialog和QWidget)
示例13.16:设置子控件的位置和大小(效果见图13-31)
#include<QtWidgets>
int main(int argc, char *argv[]){ QApplication aa(argc,argv);
QWidget w; QSpinBox *pb=new QSpinBox(&w); pb->move(33,33);
pb->resize(300,200); //为使效果比较明显,把按钮设置得相对大一点
aa.setStyleSheet(
"QSpinBox::down-button{" //设置微调按钮的向下按钮
"subcontrol-origin:content;" //子控件的原点矩形
"subcontrol-position:right bottom;" //子控件相对于原点矩形的对齐方式(右下)
"height:22px;" "width:22px;" //设置子控件(即向下按钮)的大小(即宽度和高度)
//设置向下按钮的位置使用绝对坐标指定,若要使用相对坐标,只需把absolute修改为relative即可
"position:absolute;"
"bottom:22px;" "right:11px;"
"margin:11px;" //设置向下按钮的边距
"background-color:red;" //使用红色填充子控件(向下按钮)背景
"background-clip:margin; }" //填充背景的区域为边距矩形(margin)范围
);
w.resize(400,300); w.show(); return aa.exec();}
13.9.4 字体、文本、图标、图像、不透明度属性(见表13-27)
示例13.17:设置字体、文本、图标(效果见图13-32)
#include<QtWidgets>
int main(int argc, char *argv[]){ QApplication aa(argc,argv);
QWidget w; QPushButton *pb1=new QPushButton("AAA",&w);pb1->move(22,22);
pb1->setIcon(QIcon("F:/1i.png")); //添加一个图标
pb1->resize(333,133); //为使效果比较明显,把按钮设置得相对大一点
aa.setStyleSheet(
"QPushButton{"
"icon-size:30px;" //注意:此处必须带上单位(px表示像素)
"text-align:top right;" //文本对齐方式
"text-decoration:underline;" //为文本添加下划线
/*设置字体,以下属性需按照字体度量、样式、大小、字体族的顺序排列,且字体大小必须带上单位,否则属性将不起作用。*/
"font:900 italic 55px Times New Roman;}"
);
w.resize(400,300); w.show(); return aa.exec();}
13.9.5 其他属性
1、button-layout 类型:Number
QDialogButtonBox或QMessageBox中按钮的布局,可取值为0,1,2,3,5,其意义如下:
0:QDialogButtonBox::WinLayout 1:QDialogButtonBox::MacLqyout
2:QDialogButtonBox::KdeLayout 3:QDialogButtonBox::GnomeLayout)
5:QDialogButtonBox::AndroidLayout
默认值为QStyle::SH_DialogButtonLayout的值
2、dialogbuttonbox-buttons-have-icons 类型:Boolean //QDialogButtonBox中的按钮是否显示图标
3、lineedit-password-character 类型:Number
QLineEdit的密码字符(使用unicode数字),比如:*{lineedit-password-character:9679}
默认为QStyle::SH_LineEdit_PasswordCharacter的值
4、lineedit-password-mask-delay 类型:Number //qt5.4
QLineEdit在显示密码字符之前的延迟时间(毫秒),默认为QStyle::SH_LineEdit_PasswordMaskDelay的值
5、messagebox-text-interaction-flags 类型:Number
消息框中与文本的交互行为,可取值基于Qt::TextInteractionFlags标志,比如
QMessageBox{messagebox-text-interaction-flags:5}; //即Qt::LinksAccessibleByMouse(值为4)与Qt::TextSelectableByMouse(值为1)的按位或。
默认值为QStyle::SH_MessageBox_TextInteractionFlags的值
6、titlebar-show-tooltips-on-buttons 类型:bool //是否在工具栏按钮上显示工具提示
7、widget-animation-duration 类型:Number //qt5.10
动画的持续时间(毫秒),0意味着禁用动画,默认值为QStyle::SH_Widget_Animation_Duration的值
8、alternate-background-color 类型:Brush
QAbstractItemView的交替背景色,若未设置此属性则使用QPalette::AlternateBase角色的颜色
9、paint-alternating-row-colors-for-empty-area 类型:bool
QTreeView是否为空区域(即没有项的区域)绘制交替行颜色
10、show-decoration-selected 类型:Boolean
在QListView中选择是覆盖整行还是仅覆盖文本,默认为QStyle::SH_ItemView_ShowDecorationSelected的值
11、gridline-color 类型:Color
QTableView中网格线的颜色,默认为QStyle::SH_Table_GridLineColor的值
本文作者:黄邦勇帅(原名:黄勇)