HLine
そしてVLine
スタイリングが難しい。ドキュメントの「詳細な説明」セクションを参照してください。簡単な修正として、この一連のルールを使用すると、スタイルシートを介してそのような行の外観を信頼できる比較的クリーンな方法でカスタマイズできることがわかりました。
QFrame[frameShape="4"],
QFrame[frameShape="5"]
{
border: none;
background: red;
}
これはframeShadow
プロパティに関係なく機能し、それ以外の場合は外観とスタイル ルールの効果に影響します。線の幅はデフォルトでは 1 ピクセルではないことmin-width
に注意してください。これは、 、max-width
、min-height
またはmax-height
プロパティを使用して適宜変更できます。
私の調査結果のより詳細な概要については、一緒に読んでください。
ほとんどQFrame
の はデフォルトでQFrame::Plain frameShape を持っていますが、HLine
とVLine
のデフォルトの frameShape はQFrame::Sunken
です。これは、実際には線ではなく、3D 効果を提供するために使用される中間線を含む薄いボックスであることを意味します。ドキュメントから:
中間線の幅は、特別な 3D 効果を得るために 3 番目の色を使用する、フレームの中央にある余分な線の幅を指定します。中線は、浮き上がっているか沈んでいる Box、HLine、および VLine フレームに対してのみ描画されることに注意してください。
frameShape を Plain に設定すると、この中央線は引き続き表示され、color
プロパティでスタイルを設定できます (注:またはではありません!)background-color
border-color
しかし、これは、デフォルトの沈んだ外観のままになっている HLine/VLine には機能しません。これを修正する 1 つの方法は、次のように、プロパティ列挙型の 10 進数値 (ドキュメントの hehadecimal で説明されています) で属性セレクターを使用して、Plain QFrame と Sunken QFrame に別々のスタイルを設定することです。
/* Reference (from doc.qt.io/qt-5/qframe.html#types):
* - frameShape[4] --> QFrame::HLine = 0x0004
* - frameShape[5] --> QFrame::VLine = 0x0005
* - frameShadow[16] --> QFrame::Plain = 0x0010 (default for most widgets)
* - frameShadow[48] --> QFrame::Sunken = 0x0030 (default for HLine/VLine)
*/
QFrame[frameShape="4"][frameShadow="16"],
QFrame[frameShape="5"][frameShadow="16"]
{
...
}
QFrame[frameShape="4"][frameShadow="48"],
QFrame[frameShape="5"][frameShadow="48"]
{
...
}
しかし、QFrame::Sunken を使用した HLine/VLine で機能するスタイルは、 を使用したスタイルでも機能するためQFrame::Plain
、通常は無駄です。属性セレクターの使用方法についてのみ、教育的価値のために上に示しています。
最善の方法は、QFrame をそのままのボックスとして扱い、(1) (またはVLine に対して) 設定border-top
またはborder-right
結合して、ボックスの内部がレイアウト内のスペースを占有しないようにすることです。または(2)背景色を組み合わせて使用します(この場合、最大高さ/幅は1以上である必要があります。そうでない場合、QFrameは非表示になります)。上記の最初のコード ブロックに示されているように、後者をお勧めします。max-height: 0px
max-width
border: none
お役に立てれば!