2010-06-29 320 views
58

我想在QPushButton上設置圖像,而QPushButton的尺寸應該取決於圖像的大小。我能夠在使用QLabel時執行此操作,但不能使用QPushButton如何在QPushButton上設置圖像?

所以,如果有人有解決方案,那麼請幫助我。

+1

也有使用,你可以設置在Qt的一個按鈕,設置圖像,HTTP的 編程方式的圖像有兩種方式:// QT -articles.blogspot.com/2010/06/how-to-customize-button-in-qt.html從樣式表如何設置圖像,http://qt-articles.blogspot.com/2010/06/如何添加樣式表的按鈕在qt.html – Naruto 2010-06-30 05:18:29

+0

多數民衆贊成在偉大的...它工作正常..感謝很多... – 2010-07-01 03:54:23

+0

你是最歡迎:) 如果你覺得答案是正確的,請將其標記爲正確,這樣對其他獲得類似問題的人會有所幫助。 – Naruto 2010-07-01 12:19:35

回答

2

我不認爲你可以在任何現有的按鈕類上設置任意大小的圖像。 如果你想要一個簡單的圖像表現得像一個按鈕,你可以寫自己的QAbstractButton子類,是這樣的:

class ImageButton : public QAbstractButton { 
Q_OBJECT 
public: 
... 
    void setPixmap(const QPixmap& pm) { m_pixmap = pm; update(); } 
    QSize sizeHint() const { return m_pixmap.size(); } 
protected: 
    void paintEvent(QPaintEvent* e) { 
     QPainter p(this); 
     p.drawPixmap(0, 0, m_pixmap); 
    } 
}; 
+0

感謝您的回答..你會plz幫助我通過顯示如何通過使用QPushButton而不是QAbstractButton實現此代碼。 由於我的要求是使用QPushButton。 所以,plz幫助我。 – 2010-06-29 11:37:58

+0

正如我所說,我不認爲有一個正確的方法。如果有的話,QStyle和樣式表可能會有所幫助。看看那裏。 – 2010-06-29 22:54:13

+0

謝謝,回答。 – 2010-06-30 05:05:02

51

你可以做的是使用一個像素映射爲一個圖標,然後把這個圖標到按鈕。

要確保按鈕的大小是正確的,您必須根據像素大小重新調整圖標。

像這樣的東西應該工作:

QPixmap pixmap("image_path"); 
QIcon ButtonIcon(pixmap); 
button->setIcon(ButtonIcon); 
button->setIconSize(pixmap.rect().size()); 
+4

我知道這是舊的,但我已經做到了這一點,而按鈕圖標仍然是默認的。我沒有收到任何錯誤,我的所有資源文件似乎都已加載,我的路徑也不錯。爲什麼這不適合我? – mrg95 2013-07-14 00:03:54

32
QPushbutton *button = new QPushbutton; 
button->setIcon(QIcon("<imagePath>")); 
button->setIconSize(QSize(65,65)); 
9

你也可能要設置按鈕的大小。

QPixmap pixmap("image_path"); 
QIcon ButtonIcon(pixmap); 
button->setIcon(ButtonIcon); 
button->setIconSize(pixmap.rect().size()); 
button->setFixedSize(pixmap.rect().size()); 
2

這是舊的,但它仍然有用, 完全用QT5.3測試。

要carreful,關於ressources路徑例如:

在我來說,我創建了項目源目錄中名爲「Ressources」一個服務目錄。

文件夾 「ressources」 包含圖片和icons.Then我加入Qt的那麼一個前綴 「圖像」 的像素映射路徑成爲:

QPixmap的像素圖( 「:/圖片/ Ressources/icone_pdf.png」) ;

JF

6

您還可以使用:

button.setStyleSheet("qproperty-icon: url(:/path/to/images.png);"); 

:這是一個小哈克。你應該只用作最後的手段。圖標應設置爲C++代碼或Qt Designer

0

你可以在QtDesigner中做到這一點。只需點擊你的按鈕,然後去圖標屬性,然後選擇你的圖像文件。

0

只需使用此代碼

的QPixmap像素圖( 「path_to_icon」);
QIcon iconBack(pixmap);

需要注意的是:「path_to_icon」是圖像圖標的文件的路徑。QRC項目的
你可以找到如何添加.qrc文件here