ciao!
avrei bisogno di un consiglio su come strutturare meglio alcune parti di un programmino che sto facendo.
ho questa funzione (statica per ora):
codice:
void ImageResize::resize(QString inputImage, QString dir, int width, int height)
{
    QFileInfo f(inputImage);
    QPixmap pixmap(inputImage);
    QPixmap newPixmap;
    if (width == 0)
    {
        newPixmap = pixmap.scaledToHeight(height, Qt::SmoothTransformation);
    }
    else if (height == 0)
    {
        newPixmap = pixmap.scaledToWidth(width, Qt::SmoothTransformation);
    }
    else
    {
        newPixmap = pixmap.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation);
    }
    QFile file(dir + f.fileName());
    file.open(QIODevice::WriteOnly);
    newPixmap.save(&file, 0, 100);
    file.close();
}
quello che non mi piace molto è quell'if.
e il motivo è che questa funzione la lancio per ogni voce di una lista, in questo modo:
codice:
WorkerThread::WorkerThread(QVector<QString> list, int width, int height, QString startDir, QObject *parent, bool b) :
    QThread(parent), stop(b)
{
    this->list = list;
    this->width = width;
    this->height = height;
    this->startDir = startDir;
}

void WorkerThread::run()
{
    for (int i = 0; i < list.count(); i++)
    {
        QMutex mutex;
        // PREVIENE CHE ALTRI THREAD IMPOSTINO LO STOP
        mutex.lock();
        if(this->stop) break;
        mutex.unlock();
        // EMETTE IL SEGNALE PER IMPOSTARE IL TESTO SULLA GUI
        ImageResize::resize(list.value(i), startDir + QDir::separator(), width, height);
        emit valueChanged(list.value(i));
        this->msleep(500);
    }
    emit finished();
}
pensavo di:
-spezzare la funzione resize in tre funzioni distinte
-eseguire il controllo su width e height (che passo al costruttore di WorkerThread) prima del ciclo for.

probabilmente è una cosa stupida, ma non riesco a trovare un modo per impostare la funzione da richiamare prima del for.

non so se sono stato chiaro.....