C++ alpha级别为0%的QPushButton在鼠标悬停时变为实心。如何用C++;(使用样式表?)

C++ alpha级别为0%的QPushButton在鼠标悬停时变为实心。如何用C++;(使用样式表?),c++,qt,stylesheet,qpushbutton,C++,Qt,Stylesheet,Qpushbutton,我在Qt Designer中设计了两种不同类型的QpushButton。一个是默认值,另一个我想澄清。 在QT Designer中,我将后者的初始样式表设置为: background-color: rgba( 35, 35, 35, 0% ); 我希望按钮有边框并且清晰(内部颜色并不重要,只是碰巧与配色方案匹配)。当我将鼠标移到按钮上时,我希望它保持清晰,但它会变成35/35/35的纯灰 当按钮收到按下信号时,我希望它变成半透明的绿色: background-color: rgba(

我在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,您可以使用“hover”伪状态:

button->setStyleSheet("QPushButton:hover { ... }");

您不需要使用信号,样式表就足够了。 试试这个:

QPushButton {
    background-color: rgba( 35, 35, 35, 0% );
    border: 1px solid black;
}

QPushButton:pressed {
    background-color: rgba( 0, 255, 0, 50% );
}

但我该把它放在哪里呢?它必须在cpp文件中,因为我不能接触Qt designer生成的文件。这是自动构建过程的一部分。在Qt设计器中:右键单击小部件“更改样式表…”,粘贴此文本。哦,伙计,我觉得自己很愚蠢。我不知道你可以在按钮样式表中添加这么多细节。你说得对。。。我完全可以摆脱我所有复杂的信号按钮改变的东西。太棒了这里描述了如何定制不同小部件的外观。我想我很困惑这和我之前的有什么不同?