1

最近、この質問で SO に来て、QComboBox の QScrollBar の厚さを変更するためにどのように手に入れることができるかを尋ねました。返信を読んだ後、Qt Embedded アプリケーションで Marco A. ソリューションを試しましたが、うまくいきませんでした。次に、テストのために、コンパイル環境をデスクトップに変更したところ、修正が機能しました。

基本的に私の問題は、Qt for Embedded Linux (ARM) で QComboBox の QScrollBar 幅を変更しようとすると何も起こらないが、Qt for Desktop 用にまったく同じコードをコンパイルすると動作することです。以下は、テストに使用しているコードです。

QAbstractItemView* poView = ui->comboBox->view();
QScrollBar* poBar = poView->verticalScrollBar();
poBar->setStyleSheet("width: 50px;");

同じことを行う別のコードがありますが、同じ問題を示しています。

ui->comboBox->setStyleSheet("QScrollBar:vertical { width: 50px; }");

comboBoxQt Designer (Qt Creator 内) の ui フォームで宣言されています。

Qt のバージョンは、Desktop と Qt for Embedded Linux (4.8.5) で同じです。私が奇妙だと思ったもう 1 つのこと (しかし、それとは何の関係もないはずです) は、デスクトップ用に同じコードを再度コンパイルすると、Windows XP スタイルの QComboBox が表示されますが、埋め込み用には Plastique スタイルが使用されていることがわかります (Plastique のおかげで非常に明確にわかります)。スクロール バーをスクロールするための 2 つではなく 3 つのボタンを表示します)。

では、何が起こっているのでしょうか?どうすればこの問題を解決できますか?

4

2 に答える 2

1

同じ症状に気づきました。Qtでは、多くの描画がスタイルに委任されていることを理解しています.Plastiqueスタイルには、垂直スクロールバーがない場合、正しい座標で垂直スクロールバーを描画しないように見えるというバグがあるようです.デフォルトのサイズ。したがって、これを行う場合:

QScrollBar:vertical
{
    min-width: 35px;
    width: 35px;
}

あなたが説明した症状で終わります。しかし、AFAICS には、マージンの処理にも問題があります。たとえば、次のようにマージンをいじる場合:

QScrollBar:vertical
{
    min-width: 35px;
    width: 35px;
    margin-right: 35px;
}

バグを回避できるはずです。

少なくとも私のために働いた。

于 2015-01-20T14:07:25.217 に答える