2011-12-05 143 views
0

我想使用樣式表來設置按鈕的圖標,就像這樣:如何使用樣式表設置Qt按鈕的圖標?

#include <QToolButton> 
#include <QApplication> 

QString FormStyleSheetString(const QString & name) 
{ 
    const QString thisItemStyle("QToolButton:enabled { image: url(" + name + "_normal.png); } " 
          "QToolButton:pressed { image: url(" + name + "_pressed.png); } " 
          "QToolButton:disabled { image: url(" + name + "_disabled.png); } " 
          ); 

    return thisItemStyle; 
} 

int main(int argc, char * argv[]) 
{ 
    QApplication qapp(argc,argv); 

    QToolButton button; 
    button.setStyleSheet(FormStyleSheetString("button")); 
    button.setToolButtonStyle(Qt::ToolButtonTextUnderIcon); 
    button.setIconSize(QSize(200,200)); 
    button.show(); 

    return qapp.exec(); 
} 

我編譯這樣的:

g++ -O3 -std=c++0x -Wall -Wextra -pedantic test.cpp -lQtCore -lQtGui -I/usr/include/Qt/ -I/usr/include/QtCore/ -I/usr/include/QtGui/ 

不幸的是,上述不工作(不顯示圖標)。

如果我使用setIcon,那麼圖標顯示正確。

那麼,我做錯了什麼?如何使用樣式表設置按鈕的圖標?

我使用的圖像是:
button_normal.png button_pressed.png button_disabled.png

回答

3

有類似的懸而未決的問題之前,對here。看來你應該嘗試設置border-image屬性而不是icon之一。

要修復它,改變FormStyleSheetString功能如下:

QString FormStyleSheetString(const QString & name) 
{ 
    const QString thisItemStyle("QToolButton:enabled { border-image: url(" + name + "_normal.png); } " 
           "QToolButton:pressed { border-image: url(" + name + "_pressed.png); } " 
           "QToolButton:disabled { border-image: url(" + name + "_disabled.png); } " 
          ); 

    return thisItemStyle; 
} 
+0

感謝。它現在有效。 –

相關問題