qt QScrollArea set stylesheet

本文详细介绍了如何使用QSS为QScrollArea及其滚动条定制样式,包括边框、背景颜色、滚动条尺寸及按钮等各个方面的个性化设置。
/* SCROLLAREA */
QScrollArea[scroll="1"]{
	border:  1px solid lightgray;
	background-color: white;
}
/* SCROLLBAR */
QScrollArea[scroll="1"] QScrollBar:Vertical{
	border:  none;
	background-color: rgb(56,56,85);
	width: 14px;
	margin: 15px 0 15px 0;
	border-radius:10px;
}
/* HANDLE BAR VERTICAL */
QScrollArea[scroll="1"] QScrollBar::handle:vertical{
	background-color: rgb(255,0,127);
	min-height: 30px;
	border-radius:7px;
}
QScrollArea[scroll="1"] QScrollBar::handle:vertical:hover{
	background-color: rgb(80,80,122);
}
QScrollArea[scroll="1"] QScrollBar::handle:vertical:pressed{
	background-color: rgb(185,0,92);
}
/* BTN TOP-SCROLLBAR */
QScrollArea[scroll="1"] QScrollBar::sub-line:vertical{
	border:  none;
	background-color: rgb(59,59,50);
	height: 15px;
	border-top-left-radius: 7px;
	border-top-right-radius: 7px;
	subcontrol-position: top;
	subcontrol-origin: margin;
}
QScrollArea[scroll="1"] QScrollBar::sub-line:vertical:hover{
	background-color: rgb(255,0,127);
}
QScrollArea[scroll="1"] QScrollBar::sub-line:vertical:pressed{
	background-color: rgb(185,0,92);
}
/* BTN BOTTOM-SCROLLBAR */
QScrollArea[scroll="1"] QScrollBar::add-line:vertical{
	border:  none;
	background-color: rgb(59,59,50);
	height: 15px;
	border-bottom-left-radius: 7px;
	border-bottom-right-radius: 7px;
	subcontrol-position: bottom;
	subcontrol-origin: margin;
}
QScrollArea[scroll="1"] QScrollBar::add-line:vertical:hover{
	background-color: rgb(255,0,127);
}
QScrollArea[scroll="1"] QScrollBar::add-line:vertical:pressed{
	background-color: rgb(185,0,92);
}
/* RESET ARROW */
QScrollArea[scroll="1"] QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical{
	background:none;
}
QScrollArea[scroll="1"] QScrollBar::add-page:vertical, QScrollBar::sup-page:vertical{
	background:none;
}
#include "microphonelistwidget.h" #include "factory/widgetfactory.h" REGISTER_WIDGET_CLASS(MicrophoneListWidget); MicrophoneListWidget::MicrophoneListWidget(QSharedPointer<EntityControl> model, QWidget *parent) : WidgetBase(model, parent) { this->micList_ = model.dynamicCast<EntityMicrophoneList>(); WidgetBase::setSize(); m_gridLayout = new QGridLayout(this); m_gridLayout->setSpacing(micList_->getCardSpace()); // 统一间距 int padding = micList_->getPadding(); m_gridLayout->setContentsMargins(padding,padding,padding,padding); this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); // ===== 滚动区域包装 ===== QScrollArea *scrollArea = new QScrollArea; scrollArea->setWidgetResizable(true); // 关键!允许内容自适应 scrollArea->setWidget(this); // 加载卡片 loadCard(10); } void MicrophoneListWidget::loadCard(int num) { // 设置背景颜色 QString styleSheet = QString("background-color: %1; ").arg("#ffffff"); // 动态生成按钮矩阵 // 行 int rows = num / micList_->getColCount(); // 列 int cols = micList_->getColCount(); // 余数 int rem = num % cols; if(cols == 1){ rem = 0; } for (int row = 0; row < rows; ++row) { for (int col = 0; col < cols; ++col) { QPushButton *a = new QPushButton(this); m_gridLayout->addWidget(a, row, col, Qt::AlignCenter); a->setStyleSheet(styleSheet); a->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); m_gridLayout->setColumnStretch(col, 1); } m_gridLayout->setRowStretch(row, 1); } // 最后一行 if (rem > 0) { for (int col = 0; col < rem; ++col) { QPushButton *b = new QPushButton(this); b->setStyleSheet(styleSheet); b->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); m_gridLayout->addWidget(b, rows, col, Qt::AlignCenter); } } // for (int row = 0; row < rows; ++row) { // for (int col = 0; col < cols; ++col) { // MicrophoneCard *card = // new MicrophoneCard(this->micList_, m_contentWidget); // card->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); // m_gridLayout->addWidget(card, row, col, Qt::AlignCenter); // m_gridLayout->setColumnStretch(col, 1); // } // m_gridLayout->setRowStretch(row, 1); // } // // 最后一行 // if (rem > 0) { // for (int col = 0; col < rem; ++col) { // MicrophoneCard *card = // new MicrophoneCard(this->micList_, m_contentWidget); // card->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); // m_gridLayout->addWidget(card, rows, col, Qt::AlignCenter); // } // } } void MicrophoneListWidget::paintEvent(QPaintEvent *event) {}
03-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值