1

QtDesignerで2種類のQPushButtonを設計しました。1つはデフォルトで、もう1つは明確にしておきたいものです。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を使用していると思います

4

2 に答える 2

3

シグナルを使用する必要はありません。スタイルシートで十分です。これを試してください:

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

QPushButton:pressed {
    background-color: rgba( 0, 255, 0, 50% );
}
于 2013-01-25T07:47:20.933 に答える
0

スタイルシートでは、「ホバー」疑似状態を使用できます。

button->setStyleSheet("QPushButton:hover { ... }");
于 2013-01-25T07:08:27.083 に答える