しばらく検索した後、グループボックスに表示可能な境界線を設定する方法は、StyleSheetプロパティを使用することであることがわかりました。追加した:
border: 2px solid gray;
しかし、いくつかの問題があります。
1)グループボックス内のすべてもこの設定を継承します!
2)境界線には、タイトルの近くに小さな穴/部分がありません。
これが私が話していることの写真です:
誰かがこれを正しく行う方法を知っていますか?
ありがとう、
ダビデ
最初の問題は非常に単純です。スタイルシートをコントロールに追加すると、スタイルがすべての子ウィジェットに自動的に伝播されます。ただし、いくつかの方法でスタイルシートの使用を制限できます。スタイルシートを適用するコントロールのタイプを指定できます。例:
QGroupBox {
border: 2px solid gray;
border-radius: 3px;
}
このスタイルシートは、グループボックスにのみ設定されます。ただし、この中に2番目のグループボックスを配置すると、スタイルはこれにも反映されます。どちらが良いか悪いか。
もう1つの方法は、スタイルを適用するウィジェットのobjectNameを具体的に指定することです。例:
QGroupBox#MyGroupBox {
border: 2px solid gray;
border-radius: 3px;
}
これは、オブジェクト名がMyGroupBoxのグループボックスにのみスタイルを適用します。
スペースに関しては、タイトルがあなたのボーダーの上に描かれているので、それは起こっています。スタイルシートにセクションを追加して、グループボックスのタイトルを変更することもできます。これには、背景を透明に設定したり、タイトルを心ゆくまで移動したりすることが含まれます。
例:これにより、タイトルが境界線のすぐ内側のグループボックスの左上隅にギャップなしで設定されます。
QGroupBox::title {
background-color: transparent;
subcontrol-position: top left; /* position at the top left*/
padding:2 13px;
}
これはQt5.1でうまくいきました。
qApp->setStyleSheet("QGroupBox { border: 1px solid gray;}");
エリメレク
次のようなグループボックススタイルのセレクターを指定します。
QGroupBox
{
border: 2px solid gray;
}
ギャップについては、パディングを設定することで修正できるでしょう。 ここのドキュメントを確認してください 。