我在 Qt Designer 中设计了两种不同的 QPushButton。一个是默认的,另一个我想清楚。在 QT Designer 中,我设置了后者的初始样式表,如下所示:
background-color: rgba( 35, 35, 35, 0% );
我希望按钮有一个边框并且清晰(内部颜色并不是很重要;这恰好与配色方案相匹配)。当我将鼠标悬停在按钮上时,我希望它保持清除,但是它变成了 35/35/35 的纯灰色。
当按钮收到信号按下时,我希望它变成半透明的绿色:
background-color: rgba( 0, 255, 0, 50% );
在我意识到鼠标悬停会成为问题之前,我已经编写了以下代码:
QString MyPanel::FillInvisibleButton(bool activeButton)
{
QString invisibleButton;
if (activeButton) {
invisibleButton = "QPushButton{background-color: rgba(0, 255, 0, 50%);}";
} else {
invisibleButton = "QPushButton{background-color: rgba(35, 35, 35, 0%);}";
}
return invisibleButton;
}
//Signals
void MyPanel::MyButtonPressed()
{
m_ui->myButton->setStyleSheet(FillInvisibleButton(true));
}
void MyPanel::MyButtonReleased()
{
m_ui->myButton->setStyleSheet(FillInvisibleButton(false));
}
就在按下清除按钮时使清除按钮变为透明绿色而言,这非常有效......但是当它被鼠标悬停时,它上面有一个灰色的不透明大块,我想离开!
我试过这个:
QString MyPanel::FillInvisibleButton(bool activeButton)
{
QString invisibleButton;
if (activeButton) {
invisibleButton = "QPushButton{background-color: rgba(0, 255, 0, 50%);} QPushButton:hover{background-color: rgba(35, 35, 35, 0%);}";
} else {
invisibleButton = "QPushButton{background-color: rgba(35, 35, 35, 0%);} QPushButton:hover{background-color: rgba(35, 35, 35, 0%);}";
}
return invisibleButton;
}
它根本不起作用。他们仍然将鼠标悬停在灰色上,现在他们根本不会变成绿色。
我的语法错了吗?或者??我是 Qt 新手,对 C++ 非常生疏。我没有嫁给样式表。如果有更好的方法来完成它,那就太好了。请记住,我不能对所有按钮都这样做;只是其中几个。
谢谢!
ETA:我相信我正在使用 4.5.0