mardi 4 décembre 2012

Qt Sample in Visual Studio - Add a Dialogbox on a PushButton

A l'aide de Qt Designer, j'ajoute un bouton "Ok" que je nomme okButton dans mon fichier myqt4application.ui

Une fois l'Add-In de Qt for Visual Studio installé c'est assez pratique, en double-cliquant sur le fichier .ui il s'ouvre dans Qt Designer. Je cherche à conserver qui ce a été créé par le Qt4 Template et conserver la même structure d'application.

Alors donc, que dois-je faire pour connecter un gestionnaire d’évènements à mon nouveau bouton ?

Après avoir bien lu la page suivante :
http://doc.qt.digia.com/qt/designer-using-a-ui-file.html

Je passe à l'action :

Dans mon application, j'ai repéré la ligne :
ui.setupUi(widget);

C'est la ligne :
ui.setupUi(this);
du fichier :
MyQt4Application\myqt4application.cpp
C'est après cette ligne que je vais pouvoir ajouter mon "connect"

Il faut également que j'atoute un private slot au bon endroit et que je code la fonction void onOkButtonClicked();

Je vais donc modifier les deux fichiers : myqt4application.h et myqt4application.cpp de la façon suivante :

myqt4application.h
#ifndef MYQT4APPLICATION_H
#define MYQT4APPLICATION_H

#include <QtGui/QMainWindow>
#include "ui_myqt4application.h"

class MyQt4Application : public QMainWindow
{
Q_OBJECT

public:
MyQt4Application(QWidget *parent = 0, Qt::WFlags flags = 0);
~MyQt4Application();

// BRY
private slots:
     void onOkButtonClicked();

private:
Ui::MyQt4ApplicationClass ui;
};

#endif // MYQT4APPLICATION_H

myqt4application.cpp
#include "stdafx.h"
#include "myqt4application.h"

MyQt4Application::MyQt4Application(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);

// BRY
connect(ui.okButton, SIGNAL(clicked()), this, SLOT(onOkButtonClicked()));
}

MyQt4Application::~MyQt4Application()
{

}

// BRY
void MyQt4Application::onOkButtonClicked()
{
QMessageBox::information(this, tr("Signal connected on a button"),
                 "You clicked the OK button!");
}

Remarque :
Le tag // BRY est là pour repérer facilement les lignes que j'ai modifiées par rapport à mon application de base crée automatiquement par Qt4 Template Application

Le tour est joué, ça fonctionne :

Qt DialogBox
A DialogBox is connected to the Ok button
Great fun !

Aucun commentaire:

Enregistrer un commentaire