나는 이미지에 설정하려는 QPushButton
, 그리고 크기는 QPushButton
이미지의 크기에 의존한다. 을 사용할 때이 작업을 수행 할 수 QLabel
있지만 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));
기존 버튼 클래스에 임의 크기의 이미지를 설정할 수 없다고 생각합니다. 버튼처럼 동작하는 간단한 이미지를 원한다면 다음과 같이 자신 만의 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에서이 작업을 수행 할 수 있습니다. 버튼을 클릭 한 다음 아이콘 속성으로 이동 한 다음 이미지 파일을 선택하십시오.