8

標準の QCheckbox/QRadioButton を使用して、Qt で複数行のチェックボックス/ラジオボタンを使用しようとしています。

効果がないため、直接的な解決策は見つかりませんでしたQRadioButton{wrap:true;}。可能な唯一のことはにアクセスすることですQRadioButton->label->setLineWrap(true)が、

  1. デザイナーからそうしてもらいたい
  2. ウィジェットを書き直す必要がない

QRadioButton と QLabel を隣り合わせに配置する以外に何か考えはありますか?

Thx、ボリス。

4

4 に答える 4

11

これは本当に面倒で、再実装しないと解決できません。ラベルはQt::PlainText、私が間違っていなければ使用します。私たちのプロジェクトでは、UI チームは 2 つのアプローチでこれを解決しました。

QRadioButton ボタンをタイトルとして使用する

QRadioButton をタイトルとして使用したレイアウト

オプションの簡単な説明のみが含まれるように、QRadioButton テキストを書き直します。その下に QLabel を置き、より長い説明を追加します。見栄えを良くするために、フォントを小さくし、インデントを少し使用しています。これは、たとえば Mac OS X で頻繁に使用されます。

ラジオボタンからテキストを削除する

バディラベルを使用したレイアウト

各ラジオ ボタンが QLabel の左側に配置されるように、UI を再レイアウトします。テキスト全体を QLabel に追加し、ラベルをラジオ ボタンのバディとして設定します。ラベルをクリックしてもラジオ ボタンがオンにならないため、これは最も機能の少ない方法です。また、アライメントもあまり良くありません。

于 2009-12-06T16:23:12.637 に答える
3

私が知っている唯一の方法 (ただし、「レイアウト可能」ではありません) は、\n 記号を文字列に入れることです。

于 2009-12-03T14:23:00.920 に答える
2

ラジオ ボタンの子としてレイアウトとラベルを追加し、垂直サイズ ポリシーを (固定ではなく) 優先に変更することに成功しました。

残念ながら、これはネイティブ ラベルのようにマウスのホバーやクリックに自動的に反応するようにはなりませんでしたが、ハックを見てください。ラジオ ボタンに StyleSheet("border:none") を設定すると、機能し始めました。たぶん、それは舞台裏で起こっている機能です。少しでも確信が持てれば幸いです。

また、インジケーターは "QRadioButton::indicator{subcontrol-position:top left}" <- http://doc.trolltech.com/qq/qq20-qss.htmlを使用して整列できます

于 2009-12-29T11:46:52.073 に答える