Scusate non volevo farvi arrabbiare...é solo che nessuno dei miei amici che fa un lavoro nel campo dell'informatica aveva mai nè lavorato nè sentito parlare di Qt: ecco perchè pensavo fosse sconosciuto...
Allora provo a mettere il codice prima di scrivere gli errori che mi vengono fuori.
Main.cpp
codice:
#include <QtGui/QApplication>
#include "esempio.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
Esempio.cpp
codice:
#include <QtGui>
#include "esempio.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect (ui->actionExit,SIGNAL(triggered()),this,SLOT(close()));
imageLabel = new QLabel;
child = new QLabel(0);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionOpen_triggered()
{
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open File"), QDir::currentPath());
if (!fileName.isEmpty()) {
QImage image(fileName);
child->setPixmap(fileName);
ui->mdiArea->addSubWindow(child);
child->show();
if (image.isNull()) {
QMessageBox::information(this, tr("Image Viewer"),
tr("Cannot load %1.").arg(fileName));
return;
}
imageLabel->setPixmap(QPixmap::fromImage(image));
scaleFactor = 1.0;
}
}
void MainWindow::on_actionZoom_In_triggered()
{
scaleImage(1.25);
}
void MainWindow::on_actionZoom_Out_triggered()
{
scaleImage(0.8);
}
void MainWindow::on_actionNormal_size_triggered()
{
imageLabel->adjustSize();
scaleFactor = 1.0;
}
void MainWindow::scaleImage(double factor)
{
Q_ASSERT(imageLabel->pixmap());
scaleFactor *= factor;
imageLabel->resize(scaleFactor * imageLabel->pixmap()->size());
zoomInAct->setEnabled(scaleFactor < 3.0);
zoomOutAct->setEnabled(scaleFactor > 0.333);
}
Esempio.h
codice:
#ifndef ESEMPIO_H
#define ESEMPIO_H
#include <QMainWindow>
class QLabel;
class QAction;
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_actionOpen_triggered();
void on_actionZoom_In_triggered();
void on_actionZoom_Out_triggered();
void on_actionNormal_size_triggered();
private:
Ui::MainWindow *ui;
QLabel *imageLabel;
void scaleImage(double factor);
double scaleFactor;
QAction *zoomInAct;
QAction *zoomOutAct;
};
#endif // ESEMPIO_H
In pratica sono riuscito fino ad ora a risolvere parecchi errori, ma non capisco perchè mi dice che non ho dichiarato il "child"
Il child da quello che ho studiato è una istanza di QLabel, quindi in che maniera dovrei specificarla?
A me viene l'interfaccia con i comandi, ma non riesco a far visualizzare nella mdiArea le foto che vorrei proprio per il motivo detto sopra...
PS: una volta fatta questa cosa, secondo voi come potrei passare a far visualizzare 40 immagini con uno standard predefinito? Si passa facile da 1 a 40 immagini?
Grazie in anticipo a chi mi può dare uno spunto