2012-02-08 8 views
2

QPushButtonをホバーしたり押したりしたときにフォントを太字にしたい問題があります。しかし、font-weightプロパティは通常の状態でのみ動作し、フォントの状態では何も影響を与えません。 私は本当に解決策を探しています。Qtで擬似ステートのフォントウェイトを設定できない

+0

悲しいですが、本当です:https://bugreports.qt-project.org/browse/QTBUG-8990私はそれが2012年だとは思えず、まだ解決されていません。 – HernanMartinez

答えて

3

私のバグのように見えます - スタイルシートのフォントプロパティはホバー状態では無視されます。私は、スタイルシートを使用して回避策を思い付くことができませんでしたが、あなたはいつもあなたが必要なものを得るためにQPushButtonをサブクラス化することができます

#include <QtGui> 

class HoverablePushButton : public QPushButton { 
public: 
    HoverablePushButton(const QString &text, QWidget *parent = NULL) 
    : QPushButton(text, parent) {} 

protected: 
    void enterEvent(QEvent *event) { 
    QPushButton::enterEvent(event); 
    QFont f(font()); 
    f.setBold(true); 
    setFont(f); 
    } 

    void leaveEvent(QEvent *event) { 
    QPushButton::leaveEvent(event); 
    QFont f(font()); 
    f.setBold(false); 
    setFont(f); 
    } 
}; 

int main(int argc, char **argv) { 
    QApplication app(argc, argv); 
    HoverablePushButton b("hello!"); 
    b.show(); 
    return app.exec(); 
} 

はやり過ぎかもしれませんが、機能はアプリケーションにとって重要であるならば、それはです少なくとも1つの回避策。

+0

本当にありがとうございます。私は、オブジェクトがウィジェットであり、疑似状態が単なるウィジェットでない場合にのみフォントプロパティがサポートされていると読んでいます(これは面白い方法で説明しますが、疑似状態でこれらのプロパティをサポートしないのはなぜですか-of-the-box?)。 – herophuong