Я хочу встановити зображення QPushButton
, і його розмір QPushButton
повинен залежати від розміру зображення. Я можу це робити під час використання QLabel
, але не з QPushButton
.
Тож, якщо хтось має рішення, то, будь ласка, допоможіть мені.
Я хочу встановити зображення QPushButton
, і його розмір QPushButton
повинен залежати від розміру зображення. Я можу це робити під час використання QLabel
, але не з QPushButton
.
Тож, якщо хтось має рішення, то, будь ласка, допоможіть мені.
Відповіді:
Що ви можете зробити, це використовувати pixmap як піктограму, а потім помістити цю піктограму на кнопку.
Щоб переконатися, що розмір кнопки буде правильним, вам слід змінити розмір піктограми відповідно до розміру піксельної карти.
Щось на зразок цього має працювати:
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, приблизно так:
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.
Будьте обережні, приклад щодо шляху ресурсів:
У моєму випадку я створив каталог ресурсів з назвою "Ресурси" у проекті вихідного каталогу.
У папці "Ресурси" містяться зображення та значки. Потім я додав префікс "Зображення" в Qt. Таким чином шлях до pixmap стає:
QPixmap pixmap (": / images / Ressources / icone_pdf.png");
JF
Ви можете зробити це в QtDesigner. Просто натисніть на кнопку, потім перейдіть до властивості піктограми, а потім виберіть файл зображення.