2

ボタンとメニューがあるQtフォームがあります。さまざまな理由で、ボタンやメニューの一部のアクションなど、特定の要素を無効にすることができます。

ツールチップを表示したり、マウスが無効になっているボタンやメニュー項目の上に置かれたときに無効になっている理由を説明したりする方法はありますか?

Qt4.8を使用しています。

ありがとう!

4

1 に答える 1

3

の状態に基づいてツールチップを動的に設定するQWidgetか、両方を同時に切り替えるだけです。どこかからウィジェットを無効化/有効化する際に、特定のウィジェットの上にマウスを置いたときにツールチップを表示するQWidget::setToolTip(...)ように呼び出すだけです。QStringたとえばtoggleButton(bool toggleFlag)、ボタンの有効化設定を切り替えるパブリックスロットが呼び出された場合、次のことができます。

void MyWidget::toggleButton(bool toggleFlag) {
    this->ui->myButton->setEnabled(toggleFlag);
    this->ui->myButton->setToolTip(toggleFlag ? QString("Enabled wohoo!") : QString("Disabled because I like it"));
}

もちろん、呼び出しQWidget::isEnabled()て戻り値に基づいてツールチップを変更することもできます。コードを提供していないため、ボタンを切り替える方法を推測することしかできないため、今のところ提供できるのはそれだけです。


更新:マウス イベントを受信しないため、無効なウィジェットではツールチップが機能しないことがコメントで指摘されました。両方のステートメントは真実ではありません (最小限の作業例がないため、まったく新しいプロジェクトを最初から作成したくなかったので、同じツールヒント メッセージを使用したことに注意してください。代わりに既存のプロジェクトを使用しました)。

  • 無効なボタンにカーソルを合わせると、ツールチップがトリガーされます

ここに画像の説明を入力

  • 有効なボタンにカーソルを合わせると、ツールチップがトリガーされます

ここに画像の説明を入力

于 2016-10-26T20:54:51.140 に答える