2010-06-29 3 views
58

QPushButton에 이미지를 설정하고 QPushButton의 크기는 이미지의 크기에 따라 달라집니다. QLabel을 사용할 때는이 작업을 수행 할 수 있지만 QPushButton을 사용하면 안됩니다.QPushButton에서 이미지를 설정하는 방법?

누군가가 해결책을 갖고 있다면 나를 도와주세요.

+1

당신은 Qt는에 버튼, 이미지, HTTP를 설정 프로그래밍 방식의 이미지를 설정할 수있는 사용하여 두 가지 방법이 있습니다를 추가하는 방법을 찾을 수 있습니다 -articles.blogspot.com/2010/06/how-to-customize-button-in-qt.html 스타일 시트에서 이미지 설정 방법, http://qt-articles.blogspot.com/2010/06/ how-to-add-stylesheet-for-button-in-qt.html – Naruto

+0

멋지다 ... 잘 작동한다. 감사합니다 ... –

+0

가장 환영합니다 :) 대답이 정확하다고 생각되면 제발 다른 사람들이 비슷한 문제를 겪는다면 도움이 될 것입니다. – Naruto

답변

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

답변 해 주셔서 감사합니다 ... QAbstractButton 대신 QPushButton을 사용하여이 코드를 구현할 수있는 방법을 보여줌으로써 PLZ를 도와 주시겠습니까? 내 요구 사항은 QPushButton을 사용하는 것입니다. 그래서, plz 도와주세요. –

+0

내가 말했듯이, 나는 적절한 방법이 있다고 생각하지 않는다. QStyle과 스타일 시트가 도움이 될 수 있습니다. 저기 봐. –

+0

감사합니다. –

51

입니다 .

버튼의 크기가 올바른지 확인하려면 픽스맵 크기에 따라 아이콘을 다시 활성화해야합니다. 이 같은

뭔가 작업을해야합니다 :

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

나는 이것이 오래되었다는 것을 알고있다. 그러나 나는 이것을했다. 푸쉬 버튼 아이콘은 여전히 ​​디폴트 다. 오류가 없으며 모든 리소스 파일이로드 된 것으로 보이고 경로가 좋습니다. 왜 이것이 나를 위해 효과가 없습니까? – mrg95

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, 예를해야합니다.

폴더 사진을 포함하고 icons.Then 내가 픽스맵 경로가 될 Qt는 지금의 접두사 "이미지"추가 "능숙"

QPixmap 픽스맵을 ("/ 이미지/능숙가/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는" 파일 에서 이미지 아이콘의 경로 : 것을

참고.// QT : QRC 프로젝트의
당신은 .qrc 파일 here

관련 문제