当鼠标通过 QSS 悬停在 QComboBox 上时,样式 QComboBox 的子控件向下箭头
Posted
技术标签:
【中文标题】当鼠标通过 QSS 悬停在 QComboBox 上时,样式 QComboBox 的子控件向下箭头【英文标题】:Style QComboBox's sub-control down-arrow when mouse is hovering over the QComboBox via QSS 【发布时间】:2015-01-17 00:00:01 【问题描述】:我知道如何在鼠标悬停时设置QComboBox
的样式:
pComboBox->setStyleSheet(pComboBox->styleSheet()+QString(" QComboBox:hovercss style here"))
我还知道通过以下方式设置QComboBox
的子控件向下箭头的样式:
pComboBox->setStyleSheet(pComboBox->styleSheet()+QString(" QComboBox::down-arrowcss style here"))
但是当鼠标通过QSS
悬停在QComboBox
上时,我不知道如何设置QComboBox
的子控件down-arrow
。有人有想法吗?
【问题讨论】:
【参考方案1】:我不知道QSS
是否足够强大(我认为没有),但使用eventfilter
你可以很容易地做到这一点:
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
if (obj == ui->comboBox && event->type() == QEvent::Enter)
//user enters combobox, so we apply stylesheet
ui->comboBox->setStyleSheet("QComboBox::down-arrowbackground-color: red");
else
if(event->type() == QEvent::Leave)//user leaves combobox, so we set default settings
ui->comboBox->setStyleSheet("");
return QObject::eventFilter(obj, event);
要使用eventFilter
,您还应该:
protected:
bool eventFilter(QObject *obj, QEvent *event);//in header
和
qApp->installEventFilter(this);//in constructor
【讨论】:
感谢您的解决方案。以上是关于当鼠标通过 QSS 悬停在 QComboBox 上时,样式 QComboBox 的子控件向下箭头的主要内容,如果未能解决你的问题,请参考以下文章
QComboBox 点击触发主 QDialog 上的 leaveEvent