Есть 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
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Задача поставлена следующим образом: создать класс умный указатель, с которым можно будет реализовать следующее:
Как в Qt можно реализовать меню "Окно" MDI-приложения, отражающее открытые внутренние окна и позволяющее переключаться между ними? Пока приходит...
написал простенький класс который работает как однопоточный http сервер, выдающий текущее время и дату, если обратиться по 1270