2009-04-16 35 views
1

以下のスクリーンショットには2つのQTreeViewsがあります。右側のものについては、CSSのカスタマイズを追加しました:QTreeViewスクロールバーのスタイルシートカスタマイズの問題

ただし、スクロールバーの外観が変更されています。それは "windowsxp"スタイルではなく "windows"スタイルになりました(これはデフォルトで、私はXPで開発しています)。

スクロールバーの外観を変更せずに上記のスタイル設定を使用するにはどうすればよいですか?

私はQT 4.5とWindows XPを使用しています。

ScreenShot

答えて

2

QPaletteルートのアドバイスがうまくいった。ここに解決策があります:

#if 0 // this causes the problem 
    setStyleSheet(
     "background-color: #EAF5FF;" 
     "alternate-background-color: #D5EAFF;" 
    ); 
#else // this works correctly 
    QPalette p = palette(); 
    p.setColor(QPalette::Base, QColor(qRgb(0xEA, 0xF5, 0xFF))); 
    p.setColor(QPalette::AlternateBase, QColor(qRgb(0xD5, 0xEA, 0xFF))); 
    setPalette(p); 
#endif 

どちらの方法もドキュメントに従って動作するはずですので、そのQtバグを言います。

編集:過去数日間この新しい方法で作業した後、パフォーマンスの改善も見受けられます。

3

あなたは、CSSのカスタマイズはあなたが直接何ができるかを超えて、与え能力のいずれかが必要ですか?色を変更するには、ウィジェットのパレットで色を直接変更することができます。これにより、スタイルが維持されます。

また、スタイルの変更が継承されることに注意してください。右側のツリーを含むウィジェットが左のツリーを含むウィジェットと異なるスタイルを持つ場合、その変更も同様に発生する可能性があります。

これ以外にも、CSSスタイルシートが唯一の違いであれば、これはQtバグのようだと思います。

関連する問題