3

私は現在、Ubuntu 11.04NattyNarwhalでEclipse3.5.2とQtJambi4.7.2を使用しています。

現在QCalendarWidgetを拡張するクラスがあります。スタイルシートを使用してカレンダーウィジェットのスタイルを設定しようとしています。現在、QAbstractItemViewを使用して背景に色を付けていますが、日付が含まれているセルの背景色のみが変更されます。曜日の名前を含む水平方向のヘッダー部分は、私が何をしても白のままです。スタイルシートを使用してこのヘッダーの背景色を変更する方法はありますか?

どんな助けでもいただければ幸いです。

ありがとうございました。

4

2 に答える 2

6

4.8未満のバージョンではテストしていませんが、同じ問題が発生し、解決策は非常に簡単でした。このCSSコードを使用しました:

QWidget#qt_calendar_navigationbar
{
    background-color: #424242;
    border: 1px solid #4f4f4f;
}

編集:まあ、投稿する前に読んでください-それがあなたのサブクラスで機能するかどうかはわかりませんが、試してみる価値があるかもしれません。

于 2012-04-18T12:11:16.247 に答える
2

.qssファイルを使用し、そのファイルを使用してスタイルシートを設定しようとしていると想定します。

開発者はQCalendarWidgetで外部スタイルシートの使用を完全に実装していなかったため、少しハックする必要があります。

次のような定数を.qssファイルに追加することをお勧めします。

@cons BACKGROUND_COLOR: cyan

次に、コード内のファイルから読み取ることができます。

String color = "";
try {
    URL qssFile = getClass().getResource("*PATHNAME*");
    Scanner scanner = new Scanner(qssFile.openStream());
    String nextLine;
    try {
        while (scanner.hasNextLine()){
        nextLine = scanner.nextLine();
        if (nextLine.contains("BACKGROUND_COLOR:")) {
            color = nextLine.substring(nextLine.indexOf("BACKGROUND_COLOR:") + 17);
        }
    }
    finally{
        scanner.close();
    }
} catch (IOException e) {
    e.printStackTrace();
}

コードの17は、BACKGROUND_COLOR:の長さを示しているため、その後のテキストを取得できます。

次に、新しいQColorを作成し、上から可変色に設定します。次に、QColorから新しいQBrushを作成します。次に、新しいQTextCharFormatを作成し、その背景をQBrushに設定します。最後に、QCalendarWidgetのsetWeekdayTextFormatメソッドを呼び出して形式を設定し、変更する曜日と変更する形式を渡します。次のコードは、Horizo​​ntalHeaderの毎日のボックスをシアンの背景色に設定します。

QColor c = new QColor(color);
QBrush b = new QBrush(c);
QTextCharFormat format = new QTextCharFormat();
format.setBackground(b);
this.setWeekdayTextFormat(Qt.DayOfWeek.Sunday, format);
this.setWeekdayTextFormat(Qt.DayOfWeek.Monday, format);
this.setWeekdayTextFormat(Qt.DayOfWeek.Tuesday, format);
this.setWeekdayTextFormat(Qt.DayOfWeek.Wednesday, format);
this.setWeekdayTextFormat(Qt.DayOfWeek.Thursday, format);
this.setWeekdayTextFormat(Qt.DayOfWeek.Friday, format);
this.setWeekdayTextFormat(Qt.DayOfWeek.Saturday, format);

そのすべてのコードを一緒に使用すると、.qssファイル(および必要に応じてそれ以上)を使用してHorizo​​ntalHeaderの背景色を変更する方法があります。

于 2011-07-19T21:58:48.157 に答える