Как изменить размер изображения внутри QLabel - PullRequest
2 голосов
/ 26 ноября 2010

Я разрабатываю собственный плагин в Qt, и в этой ситуации мне нужно создать виджет, на котором есть изображение.Поэтому я использую QLabel в качестве базового класса для своего пользовательского виджета.Вот код для события рисования

     QPixmap pic("/general/source/pic.png");
     setAutoFillBackground(true);
     QPalette palette;
     palette.setBrush(QPalette::Window, QBrush(pic));

     this->setPalette(palette);

Теперь изображение отображается на QLabel, но это не то, что я хотел.

  1. Я хочу, чтобы изображение масштабировалось до размера QLabel.
  2. Я не хочу, чтобы изображение повторялось само, когда размер QLabel превышает размер изображения.

Пожалуйста, помогите.

Ответы [ 3 ]

3 голосов
/ 26 ноября 2010

Предполагая, что вы можете получить размер вашего элемента управления, вы можете масштабировать свое растровое изображение перед тем, как установить его в кисти, используя

pic.scaled ( width, height, Qt::IgnoreAspectRatio, Qt::FastTransformation )

. Это возвращает другой QPixmap, который вы можете передать в свой QBrush.

Просто для справки, вы также можете использовать таблицу стилей, чтобы установить изображение границы для вашего элемента управления.

border-image: url( yourImage);
2 голосов
/ 06 февраля 2015

Попробуйте использовать функцию QLabel

setScaledContents(true);
0 голосов
/ 02 декабря 2010

Если у вас есть собственный класс виджетов, вы можете переопределить paintEvent и сделать правильный рисунок в этой точке. Я не знаю, можно ли просто нарисовать растровое изображение, масштабированное до нужного размера, и вызвать класс родителя, чтобы закончить рисование, или вам придется делать все это самостоятельно.

...