[qt] QPushButton에 이미지를 설정하는 방법은 무엇입니까?

나는 이미지에 설정하려는 QPushButton, 그리고 크기는 QPushButton이미지의 크기에 의존한다. 을 사용할 때이 작업을 수행 할 수 QLabel있지만 QPushButton.

그래서 누군가가 해결책을 가지고 있다면 저를 도와주세요.



답변

할 수있는 일은 픽스맵을 아이콘으로 사용한 다음이 아이콘을 버튼에 놓는 것입니다.

버튼의 크기가 올바른지 확인하려면 픽스맵 크기에 따라 아이콘을 다시 만들어야합니다.

다음과 같이 작동합니다.

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


답변

QPushButton *button = new QPushButton;
button->setIcon(QIcon(":/icons/..."));
button->setIconSize(QSize(65, 65));


답변

버튼 크기를 설정할 수도 있습니다.

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


답변

다음을 사용할 수도 있습니다.

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

참고 : 이것은 약간 해키입니다. 마지막 수단으로 만 사용해야합니다. 아이콘은 C++코드 또는 에서 설정해야합니다 Qt Designer.


답변

기존 버튼 클래스에 임의 크기의 이미지를 설정할 수 없다고 생각합니다. 버튼처럼 동작하는 간단한 이미지를 원한다면 다음과 같이 자신 만의 QAbstractButton-subclass를 작성할 수 있습니다.

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 );
    }
};


답변

이것은 오래되었지만 여전히 유용하며 QT5.3으로 완전히 테스트되었습니다.

자원 경로에 관한 예를 들어 조심하십시오.

제 경우에는 소스 디렉토리 프로젝트에 “Ressources”라는 이름의 자원 디렉토리를 만들었습니다.

“ressources”폴더에는 그림과 아이콘이 포함되어 있습니다. 그런 다음 Qt에 “Images”라는 접두사를 추가했습니다. 따라서 pixmap 경로는 다음과 같습니다.

QPixmap pixmap ( “: / images / Ressources / icone_pdf.png”);

JF


답변

QtDesigner에서이 작업을 수행 할 수 있습니다. 버튼을 클릭 한 다음 아이콘 속성으로 이동 한 다음 이미지 파일을 선택하십시오.