2011-08-06 13 views
3

私は私のメインウィンドウ上のQPushButtonを持っている:QPushButtonをその背景イメージと同じ次元にするにはどうすればいいですか?

practiceButton_ = new QPushButton(this); 
practiceButton_->setText(_("Practice")); 
practiceButton_->setObjectName("practiceButton"); 

その後、私はそれにいくつかのスタイルを関連付ける:

qApp->setStyleSheet("QPushButton#practiceButton { background-image: url('myfile.png'); padding:0; margin:0; border:none; }"); 

背景画像が現れるとスタイルが正常に適用されるように見えます、しかし、ボタンが背景画像よりも小さい。背景画像に合わせてサイズを変更するにはどうすればよいですか?

自動的に実行できない場合は、どこかのボタンに適用されているスタイルにアクセスし、それに基づいてボタンのサイズを変更できますか?私はそれを避けることができれば、値をハードコーディングしないようにしたいと思う。

答えて

2
pushButton.resize(QImage("filename.png").size()); 
+0

、これは非常に効率的ではありません - ちょうどそのサイズを得るためにpngをロードする - しかし残りは読者のために残されたエクササイズです。 – Scott

+0

ユーザがイメージ名をCSS内の別の名前に変更するとどうなりますか? –

+1

さて、私はちょっと試してみましたが、ほとんど成功しませんでした。私は問題は背景画像とアイコンに違いがあると思います。あなたの解決策はおそらく最良ですが、ユーザーが繰り返し情報を入力する必要があります。もう1つの解決策は、この場合はスタイルシートの使用を再考し、QConfigタイプのソリューション(スタイルにスタイルを、アイコンセットにconfigの両方を使用できます)を使用することです。他の解決策は、プッシュボタンのバックグラウンドイメージを取得し、そのサイズを取得しようとすることです(qApp-> styleSheet()を解析し、上に示したことを実行するハックが1つあります)。 – Scott

1

私は幅と高さは、おそらくそれを行うための正しい方法である、CSS自体に設定することができることを考え出しOK:もちろん

QPushButton#practiceButton { 
    background-image: url('NavigationButtonUp.png'); 
    padding:0; 
    margin:0; 
    border:none; 
    width: 194px; 
    height: 40px; 
} 
関連する問題