2011-08-06 30 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

嗯,我一直在嘗試一點點成功。我認爲問題在於背景圖像和圖標之間存在差異。您的解決方案可能是最好的,但它確實需要用戶輸入重複信息。另一種解決方案可能是重新考慮在這種情況下使用樣式表,並使用QConfig類型的解決方案(您可以同時使用:style爲樣式,config爲圖標集)。其他解決方案可能是嘗試獲取按鈕的背景圖像並獲得其大小(一個破解將解析qApp-> styleSheet()並執行上面顯示的操作)。 – Scott

1

好吧,我只是想通了,寬度和高度可以在CSS本身,這可能是做正確的方式進行設置:

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