web-dev-qa-db-ja.com

QGroupBoxボーダー

しばらく検索した後、グループボックスに表示可能な境界線を設定する方法は、StyleSheetプロパティを使用することであることがわかりました。追加した:

border: 2px solid gray;

しかし、いくつかの問題があります。

1)グループボックス内のすべてもこの設定を継承します!

2)境界線には、タイトルの近くに小さな穴/部分がありません。

これが私が話していることの写真です: alt text

誰かがこれを正しく行う方法を知っていますか?

ありがとう、

ダビデ

17
David Doria

最初の問題は非常に単純です。スタイルシートをコントロールに追加すると、スタイルがすべての子ウィジェットに自動的に伝播されます。ただし、いくつかの方法でスタイルシートの使用を制限できます。スタイルシートを適用するコントロールのタイプを指定できます。例:

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;
 } 
31
Liz

これはQt5.1でうまくいきました。

qApp->setStyleSheet("QGroupBox {  border: 1px solid gray;}");

エリメレク

1
zibetto

次のようなグループボックススタイルのセレクターを指定します。

QGroupBox
{
     border: 2px solid gray;
}

ギャップについては、パディングを設定することで修正できるでしょう。 ここのドキュメントを確認してください

0
Arnold Spence