Ajouter un Widget manuellement au programme
A l'exécution, lorsque la nouvelle application est créée, elle se referme aussitôt.
Bouton
Pour rajouter manuellement des Widgets, il suffit d'inclure la bibliothèque :
#include <QWidgets>
De créer l'instance de la classe du Widget, puis de l'afficher :
#include <QApplication>
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton bouton("Bonjour");
bouton.show();
return app.exec();
}
Mais le bouton créé occupera toute la fenêtre. Car c'est le bouton qui est la fenêtre.
Il faut donc créer une fenêtre parent et y placer le bouton.
QWidget fenetre; //on cree l'instance
fenetre.setFixedSize(300, 150); //on fixe sa dimension
QPushButton bouton("Bonjour", &fenetre); //Le bouton est integré à la fenêtre
Puis changer les propriétés du bouton
bouton.setGeometry(20, 20, 50, 80); //position dans la fenêtreet dimensions du bouton
Et afficher dans le bon ordre
bouton.show(); //Afficher le bouton
fenetre.show(); //afficher la fenêtre
Remarque : Le menu d'un programme peut être créé facilement avec QT Designer, mais dans certains cas, il est nécessaire de créer dynamiquement des items de menu (dernier fichier ouvert par exemple). Dans ce cas on devra passer par le codage du menu.
Le main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
// create main event loop handler and parse command line arguments
QApplication app(argc, argv);
// create application main window & enter main event loop
MainWindow window;
window.show();
return app.exec();
}
Le header de la fenêtre :
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
/*************************************************************************************/
/*********************** Main application window for QSimulate ***********************/
/*************************************************************************************/
class MainWindow : public QMainWindow
{
public:
MainWindow(); // constructor
};
#endif // MAINWINDOW_H
Le code de la fenêtre mainwindow.cpp (on spécifie les items du menu) :
#include "mainwindow.h"
#include <QMenuBar>
/************************************ constuctor *************************************/
MainWindow::MainWindow() : QMainWindow()
{
// add drop down menus (currently empty)
menuBar()->addMenu("&File");
menuBar()->addMenu("&Edit");
menuBar()->addMenu("&View");
menuBar()->addMenu("&Simulate");
menuBar()->addMenu("&Help");
}