我知道当鼠标悬停时如何设置QComboBox
样式:
pComboBox->setStyleSheet(pComboBox->styleSheet()+QString(" QComboBox:hover{css style here}"))
我也知道通过以下方式设置QComboBox
子控件向下箭头的样式:
pComboBox->setStyleSheet(pComboBox->styleSheet()+QString(" QComboBox::down-arrow{css style here}"))
但是,当鼠标悬停在QComboBox
上down-arrow
时,我不知道如何设置QComboBox
的子控制QSS
的样式。有人有想法吗?
答案 0 :(得分: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-arrow{background-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