1

幅の広い下矢印のグラフィック画像とカスタムの背景を必要とするC++形式のタッチスクリーンQtアプリケーションを開発しています。私はQSSを使用して機能するものを取得しようとしてきましたが、これまでのところ敗北しています。

幅の広いボタン(16ピクセルより大きいボタン)を取得する唯一の方法は、負のマージンを使用することです。

QComboBox {
    min-height:63px;
    max-height:63px;
    margin-right:47px;
    border-image:url(Resources/ComboBox_Center1.png);
    font-family:  "Franklin Gothic Medium";
    font-size:  22px;
}
QComboBox::drop-down {
    width:47px;
    border:0px;
    margin:0px;
    margin-right:-47px;
}
QComboBox::down-arrow {
    image:url(Resources/ComboBox_Right1.png);
}

これにより、ボタンが正しい位置に配置され、入力領域が正しいサイズになりますが、下矢印はコンボボックスを開くだけで、開いてから閉じることはありません。

他のすべてのオプションは、入力領域を領域(マージン、境界線)に拡張するか、コントロール全体を縮小します。

background-imageタグを設定しても効果はありませんでした。つまり、境界線の画像だけが画像を表示していました。

境界線の画像(または背景色)は、矢印の下でも常に表示されることに注意してください。

コンボボックスの入力セクションだけをスタイリングする方法はありますか?コンボのその部分には独自の子セレクターが必要なようですが、私はそれを見ていません。

4

1 に答える 1

3

これを試して...

QComboBox {
    min-height:63px;
    max-height:63px;
    font-family:  "Franklin Gothic Medium";
    font-size:  22px;
    padding: 1px 1px 1px 1px;
}
QComboBox::drop-down {
   width: 47px;
   border: 0px;
}

QComboBox::down-arrow {
    image: url(Resources/ComboBox_Right1.png);
    width: 42px;
    height: 42px;
}

注: 下向き矢印の画像の幅と高さは、使用している画像によって異なります。これらは私のイメージで機能します。

スタイルシートには奇妙な点がいくつかあります - そして多くの隠れたトリックがあります。スタイル シートがどのように機能するかの基本原則を説明するこの記事を読むのに、数分かかる価値があるかもしれません。簡単そうに見えますが、しばらく使った後でも、例やドキュメントに戻ることがよくあります。

背景画像は、自明ではないものの 1 つです。これは私がドキュメントから直接取ったものです。ほとんどの場合、背景に画像を設定するとき、本当に必要なのは境界線の画像を設定することです。「背景画像」が表示されない理由は、コンボボックスが「複雑な」ウィジェットであるため、つまり、他のいくつかのウィジェットで構成されているため、背景がそれらの背後に隠されているためだと思います。

background-image プロパティを試すのが一般的ですが、これには多くの欠点があります。たとえば、背景は背景とは見なされないため、ボタンの装飾の後ろに隠れて表示されることがよくあります。さらに、ボタンのサイズを変更すると、背景全体が引き伸ばされたりタイル状に表示されたりするため、見栄えがよくありません。背景に関係なく常に画像を表示し (背景にアルファ値がある場合は背景と組み合わせることができます)、ボタンのサイズ変更を処理するための特別な設定があるため、border-image プロパティを使用することをお勧めします。 .

入力領域のスタイリングに関しては... QComboBox が編集可能であると仮定すると、入力領域は単なる QLineEdit になります。したがって、この方法でいつでもスタイルシートを行編集に割り当てることができます

comboBox->lineEdit()->setStyleSheet(your style sheet);

それが役立つことを願っています。

于 2011-11-08T02:08:53.703 に答える