Usare i Multiple Document Interface in Qt
I Multiple Document Interface possono essere molto comodi in molti ambiti.
Qui vediamo un esempio base in Qt.
Cominciamo con la finestra principale:
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMdiSubWindow>
#include "formclienti.h"
#include <QDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
virtual ~MainWindow();
private slots:
void on_actionClienti_triggered();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
E questa la sua implementazione:
// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionClienti_triggered()
{
FormClienti *fc = new FormClienti();
QMdiSubWindow *subWindow = ui->mdiArea->addSubWindow(fc);
subWindow->show();
}
Qui abbiamo aggiunto:
- un item al menu che richiamerà il secondo form da aggiungere al MDI
- un oggetto QMdiSubWindow (tramite il Qt Designer)
- un SLOT da richiamare quando clicchiamo sull'item del menu
Nello SLOT richiamiamo la seconda finestra e la aggiungiamo alla QMdiSubWindow tramite il metodo addSubWindow.
Questa la seconda finestra:
// formclienti.h
#ifndef FORMCLIENTI_H
#define FORMCLIENTI_H
#include <QWidget>
namespace Ui {
class FormClienti;
}
class FormClienti : public QWidget
{
Q_OBJECT
public:
explicit FormClienti(QWidget *parent = 0);
virtual ~FormClienti();
private:
Ui::FormClienti *ui;
};
#endif // FORMCLIENTI_H
E il suo file di implementazione:
// formclienti.cpp
#include "formclienti.h"
#include "ui_formclienti.h"
FormClienti::FormClienti(QWidget *parent) :
QWidget(parent),
ui(new Ui::FormClienti)
{
ui->setupUi(this);
}
FormClienti::~FormClienti()
{
delete ui;
}
Come potete vedere adesso è vuoto; è solo a scopo dimostrativo.
Cliccando sul menu vedrete comparire la seconda finestra!
Enjoy!
qt mdi qmdisubwindow addsubwindow slot multiple document interface
Commentami!