Передача данных в comboBox

125
11 июля 2021, 09:00

С помощью combobox пытаюсь изменять размер изображение. Делаю это вот таким образом. Но не могу понять, почему в comboBox ничего не отображается. Подскажите, пожалуйста, в чём проблема и как можно её исправить?

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setFixedSize(QSize(width(), height()));
    QString pic = " ";
    ui->lineEdit->setText(pic);
    QPixmap pix;
    pix.load(pic);
    //ui->label_photo->resize(pix.size());
    ui->label_photo->setPixmap(pix);
}
MainWindow::~MainWindow()
{
    delete ui;
}
QString MainWindow::pic()
{
    return ui->lineEdit->text();
}
void MainWindow::on_pushButton_clicked()
{
    QString photo = QFileDialog::getOpenFileName(this,"load img",QString(),"Images (*.jpg *png)");
    ui->lineEdit->setText(photo);
    ui->label_photo->setPixmap(photo);
    qDebug()<<photo;
}
void MainWindow::on_pushButton_2_clicked()
{
    QImage picture (ui->lineEdit->text());
    picture.load(ui->lineEdit->text());
    ui->label_2->setPixmap(QPixmap::fromImage(picture));
    QRgb tc = qRgb (243, 88, 165);
      for (int i = 0; i < picture.width(); i++)
      {
          for (int j = 0; j < picture.height(); j++)
          {
              if (picture.pixel(i, j)== qRgb(0, 0, 0))
              {
                  picture.setPixel(i, j, tc);
              }
              }
          }
        ui->label_2->setPixmap(QPixmap::fromImage(picture));
}
void MainWindow::on_pushButton_3_clicked()
{
    QImage picture;
    picture.load(ui->lineEdit->text());
    QMatrix matrix;
    matrix.scale(-1, 1);
    picture = picture.transformed(matrix);
    ui->label_2->setPixmap(QPixmap::fromImage(picture));
}
void MainWindow::on_pushButton_4_clicked()
{
//    QPixmap pic2;
//    pic2.load(ui->lineEdit->text());
//    QSize PicSize(500, 500);
//    pic2 = pic2.scaled(PicSize,Qt::KeepAspectRatio);
//    ui->label_2->setPixmap(pic2);
//    ui->label_2->repaint();
}
void MainWindow::on_comboBox_activated(const QString &arg1)
{
    if (arg1 == "500x500") {
            QPixmap pic2;
            pic2.load(ui->lineEdit->text());
            QSize PicSize(500, 500);
            pic2 = pic2.scaled(PicSize,Qt::KeepAspectRatio);
            ui->label_2->setPixmap(pic2);
            ui->label_2->repaint();
            qDebug()<<pic2;
    }
    else if (arg1 == "700x700") {
        QPixmap pic2;
        pic2.load(ui->lineEdit->text());
        QSize PicSize(700, 700);
        pic2 = pic2.scaled(PicSize,Qt::KeepAspectRatio);
        ui->label_2->setPixmap(pic2);
        ui->label_2->repaint();
    }
}
Answer 1

Я не совсем корректно передал комбобоксу наименования. Изменения масштаба я переделал таким образом:

void MainWindow::on_pushButton_4_clicked()
{
    int i = ui->comboBox->currentIndex();

    switch (i) {
    case 0: {    
        QPixmap pic2;
        pic2.load(ui->lineEdit->text());
        QSize PicSize(320, 200);
        pic2 = pic2.scaled(PicSize,Qt::KeepAspectRatio);
        ui->label_2->setPixmap(pic2);
        ui->label_2->repaint();
        break;
    }
    case 1: {
        QPixmap pic2;
        pic2.load(ui->lineEdit->text());
        QSize PicSize(640, 350);
        pic2 = pic2.scaled(PicSize,Qt::KeepAspectRatio);
        ui->label_2->setPixmap(pic2);
        ui->label_2->repaint();
        break;
    }
    case 2: {
        QPixmap pic2;
        pic2.load(ui->lineEdit->text());
        QSize PicSize(640, 480);
        pic2 = pic2.scaled(PicSize,Qt::KeepAspectRatio);
        ui->label_2->setPixmap(pic2);
        ui->label_2->repaint();
        break;
    }
    case 3: {
        QPixmap pic2;
        pic2.load(ui->lineEdit->text());
        QSize PicSize(800, 600);
        pic2 = pic2.scaled(PicSize,Qt::KeepAspectRatio);
        ui->label_2->setPixmap(pic2);
        ui->label_2->repaint();
        break;
    }
    case 4: {
        QPixmap pic2;
        pic2.load(ui->lineEdit->text());
        QSize PicSize(1024, 768);
        pic2 = pic2.scaled(PicSize,Qt::KeepAspectRatio);
        ui->label_2->setPixmap(pic2);
        ui->label_2->repaint();
        break;
    }
    default:
        break;
    }
}
READ ALSO
Реверс инжиниринг

Реверс инжиниринг

Доброго времени суток!

100
Не могу наследовать класс QNetworkReply

Не могу наследовать класс QNetworkReply

Всем приветВторой день бьюсь головой и не могу наследоваться от класса QNetworkReply

83
asio::thread_pool + std::promise — почему-то много VSZ

asio::thread_pool + std::promise — почему-то много VSZ

Есть такой простой пример, в котором происходит использование пула на 70 потоков и создание в каждом std::promise:

81
Как поменять цикл while на for?

Как поменять цикл while на for?

я стараюсь не использовать цикл while, потому что он мне не нравитьсяНо мне нужно вызвать функцию ReceiveAndPrint и проверить ее, не равна ли она 0, после...

86