Qt样式表(3):样式表的其他属性

若对C++语法不熟悉,建议参阅《C++语法详解》一书,电子工业出版社出版,该书语法示例短小精悍,对查阅C++知识点相当方便,并对语法原理进行了透彻、深入详细的讲解。

注:类型为属性可取值的“属性类型”(注意:不是Qt类型,属性类型及可取值见13.9.6节)
本小节把border也翻译为边框,因此需注意与frame(边框)的区别,可把border译为边界

13.9.1 与背景色、前景色、所选文本颜色相关的属性(见表13-26)

Qt样式表(3):样式表的其他属性
Qt样式表(3):样式表的其他属性

示例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();		}

Qt样式表(3):样式表的其他属性

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();}

Qt样式表(3):样式表的其他属性

13.9.4 字体、文本、图标、图像、不透明度属性(见表13-27)

Qt样式表(3):样式表的其他属性
Qt样式表(3):样式表的其他属性

示例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();}

Qt样式表(3):样式表的其他属性

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的值

本文作者:黄邦勇帅(原名:黄勇)

相关文章: