2

私はスタイルシートを使用して、Qtアプリの1つの外観をカスタマイズしています(実際にはpyqtですが、まったく同じです)。

これが私がQMenuに使用しているスタイルシートコードです。すべてのQMenuに正しく色が付けられますが、すべてのインジケーター(チェックされたQMenuアイテム)の背景が透明であるかのようにチェックされます。

QMenu {
    背景色: "#242424";
    色: "#D5D5D5";
}

インジケーターに背景色を設定すると、インジケーターの背景の中央が正しく色付けされますが、中央の正方形の周りに大きな境界線があり、まだチェックされており、チェックが表示されなくなります。

QMenu :: Indicator {
    背景色: "#242424";
}

また、ドキュメントの例に示されている幅と高さのプロパティが機能しないことにも気づきました。

QMenusの色と外観をカスタマイズしようとして同様の問題が発生した人はいますか?どのようにそれらを解決しましたか?

4

2 に答える 2

2

それだけの場合は、代わりに QPalette を使用して色を操作します。しかし、これが氷山の一角にすぎず、さらにスタイルのカスタマイズを探している場合は、ほぼすべてのプロパティを定義する必要があります (Qt のドキュメントに記載されています)。なんらかの理由で、Qt はスタイル シートで継承を行っていないようです。そのため、メニューの角を丸めるようなことをしようとする場合でも、他のすべてのプロパティも定義する必要があります。

また、ドキュメントで実際に見たことがないことに注意してください。スタイルシートを変更したいが、パレットの色にアクセスしたい場合は、次のようにスタイルシートで palette(ColorRole) を使用できます。

QMenu {
    background-color: palette(Window);
}

とにかく...ここにいくつかのオプションがあります:

QPalette ソリューション

menu = QMenu(self)
palette = menu.palette()
palette.setColor(menu.backgroundRole(), QColor('#242424'))
menu.setPalette(palette)

スタイルシート ソリューション

http://doc.qt.nokia.com/4.7-snapshot/stylesheet-examples.html#customizing-qmenu

高度なカスタマイズの 1 つをコピーし、すべての値を微調整します。すべてがカードの家であるため、実際には削除しません。

于 2012-08-21T17:19:16.347 に答える
1

Qt が QMenu::indicators のスタイルシートを処理する方法に関する文書化されたバグと思われるものの回避策を見つけました。

プロパティを使用する代わりに、縮小する代わりにネイティブ サイズで画像を挿入するプロパティを使用しましたimagebackground-imageインジケーターのサイズを設定することはできませんが、paddingプロパティを使用してメニュー項目のテキストを移動し、インジケーター イメージ全体が表示されるようにすることができます。

QMenu::item {
    padding: 3px 20px;
}

QMenu::indicator:checked {
    background-image: url(/path/to/image.png);
}
于 2013-02-06T01:17:35.283 に答える