0

ボタンのグリッドを持つウィジェットを設計しています。クリックすると、これらのボタンを使用して、ユーザーが選択できる3つの選択肢(理想的には小さなドロップダウンメニュー)を表示します。彼らが3つの選択肢のうちの1つを選択するとき、私はそのボタンが選択されることを望みます(つまり、押されたままになります)。3つの選択肢のそれぞれに関連付けられているQActionで、どのボタンがクリックされたかを認識できるようにして、グリッド内のどのボタンがクリックされたかをログに記録できるようにします。グリッド内の各ボタンは、選択されている場合は排他的である必要があります。表示される3つの選択肢は、すべてのボタンで同じです。

私は最初にQGridLayoutのQButtonGroupとQPushButtonsから始めました。思い通りにボタンを排他的にすることができました。ボタンをQPushButtonからQToolButtonに変更し、ドロップダウンメニューを追加すると、次の2つのことが起こりました。

  • メニューから項目を選択しても、ボタンが押したままになりません。
  • どのボタンが選択されたかをメニューアクションに通知する方法がわからないため、どのボタンが選択されたかをログに記録できません。

探している機能を実現する方法について何か考えはありますか?

編集:

いくつかの明確なポイント:

  • mxnグリッドの各ボタンは人を表します。
  • 各ボタンのドロップダウンリストでは、その人が現在実行しているアクションを選択できます。
  • 一度に1人だけが何かをすることができます。したがって、グリッド全体で一度に押すことができるボタンは1つだけです。
  • ボタンドロップダウンメニューの項目は、選択時にチェックされる必要があり、これらの項目は排他的である必要があるため、ボタンを2回クリックした場合、ドロップダウンメニューの新しいチェックメニュー項目は前の項目のチェックを外す必要があります。
  • ボタンのドロップダウンメニューの項目を選択すると、メニューが消え、ボタンが押された状態で表示されます。
  • クリックされたボタン(つまり、行と列)と、ボタンのドロップダウンメニューから選択された選択肢をログに記録する必要があります。したがって、どういうわけか、メニュー項目の信号/スロットは、どのボタンがクリックされたかを知る必要があります。ただし、QToolButton :: setMenu()はメニューの所有権をQToolButtonに譲渡しないため、QMenuのQActionsのシグナル/スロットにどのボタンが選択されたかを認識させる方法がわかりません。
4

1 に答える 1

0

QObject::sender は、どの QObject がシグナルを発したかを教えてくれます

于 2012-07-09T21:19:26.680 に答える