Есть QLabel, в который нужно запихнуть изображение. Нужно сделать так, чтобы это изображение отображалось с рамкой различной толщины. Как это можно сделать?
P.S. QtStyleSheets не подходит
Или, если есть лучший способ работы с изображениями в Qt, подскажите пожалуйста. Чтобы задача была понятнее, нужно отрисовать HTML тег img с его атрибутами средствами Qt Widgets. Очень слабо знаю Qt, а время поджимает.
Класс QLabel наследуется от QFrame, а у последнего имеются методы установки рамки, стиля тени, а также толщины линий (тут и тут).
Но можно и вручную на виджете, переопределив соответствующий метод:
void MyWidget::paintEvent(QPaintEvent *event) {
QPixmap pix("image.png");
if(pix.isNull() == false) {
QRect dst_rc = rect();
if(dst_rc.width() > dst_rc.height())
pix = pix.scaledToHeight(dst_rc.height());
else if(dst_rc.height() > dst_rc.width())
pix = pix.scaledToWidth(dst_rc.width());
dst_rc = pix.rect();
dst_rc.moveCenter(rect().center());
const QBrush brush(Qt::black);
const QPen pen(brush, 2); // Второй аргумент - толщина линии.
QPainter painter(this);
painter.setPen(pen);
painter.setBrush(brush);
painter.drawPixmap(dst_rc, pix);
painter.drawRect(dst_rc);
}
event->accept();
}
... где MyWidget - наследник QWidget.
Продвижение своими сайтами как стратегия роста и независимости