Неправильный размер QLabelC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Неправильный размер QLabel

Сообщение Anonymous »

Я хочу отобразить изображение в своем приложении Qt6. Вот код:

Код: Выделить всё

#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;
}
Src_image передается из другого окна. Проблема в том, что после загрузки изображения (функция setImage) размер метки неправильный: qDebug говорит, что это (100, 30). Но как только я перетаскиваю ползунок, меняющий яркость, размер метки сразу становится нормальным. В чем подвох?
Пытался переставить код, но это не сработало.
UPD: Проблема проявляется, когда я группирую image_label в Редактор пользовательского интерфейса. Но мне это нужно...

Подробнее здесь: https://stackoverflow.com/questions/782 ... label-size
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»