QT有关QCobobox控件的样式设置(圆角、下拉框,向上展开、可编辑、内部布局等)

本文详细介绍了如何调整Qt中的QComboBox样式,包括设置基础样式、圆角透明、下拉选项的悬浮和选中效果,以及通过代码动态添加选项。还探讨了如何解决字体居中、下拉框位置调整和编辑模式样式等问题。

前言

QT设计界面时,难免会遇到修改QCombobox样式的问题。相比于其他的QLabel、QPushButton等控件,QCobobox的样式设置明显困难并复杂很多。以下介绍一下目前为止,本人参考网上代码,制作的一款QCobobox下拉框的样式风格。

效果图:
在这里插入图片描述
在这里插入图片描述

正文

一、基础样式表

/*QCombobox主体*/
QComboBox {
   
   
    border: 2px solid #f3f3f3;/*设置线宽*/
	background-color: rgb(237, 242, 255);/*背景颜色*/
    border-radius: 15px;/*圆角*/
    padding: 1px 2px 1px 2px;  /*针对于组合框中的文本内容*/
	text-align:bottom;
    min-width: 9em;   /*# 组合框的最小宽度*/
    /*min-height: 5em;*/

	border-style:solid;/*边框为实线型*/
	border-width:2px;/*边框宽度*/
	border-color:rgb(77, 123, 255);/*边框颜色*/

	padding-left: 10px;/*左侧边距*/
}
/*QCombobox右侧按钮*/
QComboBox::drop-down {
   
   
    subcontrol-origin: padding;
    subcontrol-position: top right;/*放于右方顶部*/
    width: 50px;/*设置按钮范围宽度*/
 	/*border-radius: 15px;
    border-left-width: 1px;
    border-left-color: darkgray;
    border-left-style: solid;*/

    border-top-right-radius: 3px;/*设置边框圆角*/
    border-bottom-right-radius: 3px;
/*padding-right: 50px;*/
}
/*QCombobox右侧按钮的箭头图标*/
QComboBox::down-arrow {
   
   
	border-image: url(:/image/down_list.png);/*自定义图片填充*/
	width: 10px;/*设置该图标的宽高*/
	height: 10px;
}


/* 下拉后,整个下拉窗体样式 */
QComboBox QAbstractItemView {
   
   
    border: 2px solid #f3f3f3;/*边框宽度、线形、颜色*/
	background-color: rgba(237, 242, 255, 1);/*背景颜色*/
    border-radius: 15px;/*圆角*/
    padding: 1px 2px 1px 2px;  /*针对于组合框中的文本内容*/
    min-width: 9em;   /*# 组合框的最小宽度*/
}

/* 下拉后,整个下拉窗体每项的样式 */
QComboBox QAbstractItemView::item {
   
   
	border-radius: 15px;/*圆角*/
    height: 30px;   /* 项的高度(设置pComboBox->setView(new QListView());后,该项才起作用) */
	background-color: rgb(237, 242, 255);

}

/*以下部分不知为何不生效,有待调试*/
/* 下拉后,整个下拉窗体越过每项的样式 */
QComboBox QAbstractItemView::item:hover {
   
   
    color: #FFFFF0;
       /* 整个下拉窗体越过每项的背景色 */
	background-color: rgb(98, 0, 255);
}

/* 下拉后,整个下拉窗体被选择的每项的样式 */
QComboBox QAbstractItemView::item:selected {
   
   
    color: #FFFFF0;
	background-color: rgb(0, 85, 200);
}

补充:
1.用border-radius: 15px;设置圆角的时候,该控件的高度至少要保证30px,才能显示出圆角,否则为矩形。
2.要在对应的父窗口类初始化代码中,添加setView(new QListView());,下拉框的展开框样式才会生效。

	//combobox下拉框样式表生效
    ui->comboBox->setView
Qt 5.15.2中,可以通过使用Qt样式表(QSS)来设置`QComboBox`的边框颜色、下拉箭头颜色以及背景填充颜色。以下是一个详细的样式设置示例,展示了如何自定义这些属性: ### 设置QComboBox的样式 ```css QComboBox { border: 1px solid #a0a0a0; /* 边框颜色和宽度 */ border-radius: 4px; /* 边框圆角 */ padding: 1px 18px 1px 3px; /* 内边距,为下拉箭头留出空间 */ background-color: #f0f0f0; /* 背景填充颜色 */ } QComboBox::drop-down { border: 0px; /* 去掉下拉按钮的边框 */ background-color: transparent; /* 下拉按钮背景透明 */ } QComboBox::down-arrow { image: url(:/images/down_arrow.png); /* 自定义下拉箭头图片 */ width: 12px; height: 12px; } ``` ### 说明 - **边框颜色**:通过`border`属性设置,`#a0a0a0`是边框颜色。 - **背景填充颜色**:通过`background-color`属性设置,`#f0f0f0`是背景颜色。 - **下拉箭头**:可以通过`::down-arrow`伪状态来设置自定义的箭头图片。如果不想使用图片,也可以通过`border`或其他方式来绘制箭头。 ### 使用样式表 将上述样式表应用到`QComboBox`控件上,可以通过以下方式: #### 在代码中设置样式表 ```cpp QComboBox *comboBox = new QComboBox(this); comboBox->addItem("Option 1"); comboBox->addItem("Option 2"); comboBox->addItem("Option 3"); comboBox->setStyleSheet( "QComboBox {" " border: 1px solid #a0a0a0;" " border-radius: 4px;" " padding: 1px 18px 1px 3px;" " background-color: #f0f0f0;" "}" "QComboBox::drop-down {" " border: 0px;" " background-color: transparent;" "}" "QComboBox::down-arrow {" " image: url(:/images/down_arrow.png);" " width: 12px;" " height: 12px;" "}" ); ``` #### 在Qt Designer中设置样式表 1. 打开Qt Designer。 2. 选择`QComboBox`控件。 3. 右键点击控件,选择“改变样式表”。 4. 输入上述样式表内容并应用。 通过这种方式,可以灵活地调整`QComboBox`的外观,包括边框、背景和下拉箭头的样式。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值