Код: Выделить всё
#include "editingwindow.h"
#include "ui_editingwindow.h"
#include
#include
#include
const double WIDTH_PERCENT = 0.7;
const double HEIGHT_PERCENT = 0.8;
void adjustBrightness(QPixmap &image, int delta);
EditingWindow::EditingWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::EditingWindow)
{
ui->setupUi(this);
QScreen *desktop = QGuiApplication::primaryScreen();
QRect desktopRect = desktop->availableGeometry();
int desktopWidth = desktopRect.width();
int desktopHeight = desktopRect.height();
// Make the window size relative to the desktop
resize(desktopWidth * WIDTH_PERCENT, desktopHeight * HEIGHT_PERCENT);
connect(ui->test_slider, &QSlider::valueChanged, this, &EditingWindow::adjust_brightness);
}
void EditingWindow::displayImage(const QPixmap &image) {
QSize labelSize = ui->image_label->size();
ui->image_label->setPixmap(image.scaled(labelSize));
}
void EditingWindow::setImage(const QPixmap image)
{
src_image = image;
displayImage(src_image);
}
void EditingWindow::adjust_brightness(int delta) {
QPixmap temp = src_image;
adjustBrightness(temp, delta);
displayImage(temp);
}
void adjustBrightness(QPixmap &image, int delta)
{
QImage img = image.toImage();
for (int y = 0; y < img.height(); ++y) {
for (int x = 0; x < img.width(); ++x) {
QRgb pixel = img.pixel(x, y);
int red = qRed(pixel);
int green = qGreen(pixel);
int blue = qBlue(pixel);
red = qBound(0, red + delta, 255);
green = qBound(0, green + delta, 255);
blue = qBound(0, blue + delta, 255);
img.setPixel(x, y, qRgb(red, green, blue));
}
}
image = QPixmap::fromImage(img);
}
EditingWindow::~EditingWindow()
{
delete ui;
}
Пытался переставить код, но это не сработало.
UPD: Проблема проявляется, когда я группирую image_label в Редактор пользовательского интерфейса. Но мне это нужно...
Подробнее здесь: https://stackoverflow.com/questions/782 ... label-size