2011-08-23 13 views
12

私は単純なQSS(Qtスタイルシート)に多くのバグがあります。 Qtのバグですか?Qtスタイルシートのバグ?

例:

enter image description here

スタイルシート:

#check1 { 
    color: red     //didn't work here 
} 

#check2 { 
    color: red;     //but work here 
    background-color: black 
} 

#label1 { 
    color: blue; 
    text-decoration: underline //work fine here 
} 

#label2:hover { 
    color: blue; 
    text-decoration: underline //but didn't work here 
} 

源:

#include <QtGui> 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    app.setStyleSheet(" #check1 {color: red} \ 
         #check2 {color: red; background-color: black} \ 
         #label1 {color: blue; text-decoration: underline} \ 
         #label2:hover {color: blue; text-decoration: underline}"); 
    QWidget w; w.setFixedSize(120,130); 

    QCheckBox check1("checkbox1",&w); 
    check1.setObjectName("check1"); 
    check1.move(10,0); 

    QCheckBox check2("checkbox1",&w); 
    check2.setObjectName("check2"); 
    check2.move(10,30); 

    QLabel label1("label1", &w); 
    label1.setObjectName("label1"); 
    label1.move(10,60); 

    QLabel label2("label2", &w); 
    label2.setObjectName("label2"); 
    label2.move(10,90); 
    w.show(); 

    return app.exec(); 
} 

QT 4.7.3-3。アーチlinux; gnome 3フォールバックモード

答えて

8

、問題がどこかのGtk +スタイルである: enter image description here

QLabelQPushButton又はQCheckBox:hover擬似状態CSSセレクタに(text-decoration含む)フォントの変更をサポートしていません。最も単純なウィジェットはQToolButton(本当に必要な場合はQLabelsを置き換えるために使うことができる)のようです。
その状態のパレット変更(前景色と背景色とスタイル)は、すべてのウィジェットでサポートされています。

4

あなたのチェックボックスの問題点はわかりませんが、Qtのスタイルシートの参考になっています(オンラインでは見つかりませんが、Qt Assistant )

QLabelはボックスモデルをサポートしています。 :hover疑似状態はサポートしていません。

つまり、QLabel:ホバーはサポートされていません。代わりに

// some comment 

使用

/* some comment */ 

+1

しかし、色:青色:ホバーはまだ動作... – TheHorse

+0

あなたは正しいです!彼らの文書によると、それは奇妙ではないはずです。私は経験から知っていますが、過去にここでやっていることを正確にやろうとしたので、下線の変更は機能しません。 – Chris

+0

Qt 4.7はホバーをサポートしていますhttp://doc.qt.nokia.com/latest/stylesheet-syntax.html#pseudo-states – spraff

2

。私は改行が破損していないので、彼らは後者の形式を選んだと思う。

これ以外にもまだ問題がなければ、バグに遭ったようです:https://bugreports.qt-project.org//browse/QTBUG-4307

のみテキストの色を設定するための回避策として、私のために働いた

#check1:hover { color:red; background-color:transparent; } 

を試してみてください。

+0

コメントは質問にのみ追加されています、彼らはソースコードに存在しません – TheHorse

+0

@ TheHorse:それは質問に記載されているはずです。そのまま返信します。 –

0

color: red 

color: red; 

ではないでしょうか?

投稿コードにセミコロンがいくつかありません。最初のチェックボックスについて

+1

最後の項目の後にセミコロンは必要ありません。 – TonyK

+1

...必要な場合があります。 Qtはいくつかのブラウザではなく解析しています。だから、それは時間がある方法を実装するノキアに任されている。私は、一般に、他の誰かの標準の不明瞭な利便性の特徴が実装されていると仮定することは悪い習慣であると思います。他のいくつかのQtクラスを見ると、実装されていないか、diffメソッドで実装されているものが常に見つかるでしょう。ブラウザさえ、すべての標準に追いつかない。 – user440297

+0

セミコロンで変更されたものはありません – TheHorse

関連する問題