Tähän esimerkkiin on lisätty Dialogille oma luokka sekä säännöllisten lauseiden käsittelijä. Ohjelma on tuotettu Creatorin wizardilla ja graafisella editorilla.
TEMPLATE = app HEADERS = dialogi.h SOURCES = dialogi.cpp \ main.cpp FORMS = dialogi.ui
Dialogiin pitää siirtää valikosta napit, vaakasuorat layoutit(punaiset suorakaiteet), ja "spacer"(sininen nauha). Layoutien ja spacerin avulla dilogi pysyy saman muotoisena vaikka sitä venytettäisiin.
Dialogin ohsikkotiedosto näyttää tältä
#ifndef DIALOG_H #define DIALOG_H #include <QDialog> #include "ui_dialogi.h" //luokka on tehty perimällä se QDialog ja käyttöliittymä luokista, kyseessä on siis moniperintä class Dialogi : public QDialog, public Ui::Dialogi { Q_OBJECT public: Dialogi(QWidget *parent = 0); private slots: void on_lineEdit_textChanged(); }; #endif
Ja luokan toteutus tältä
#include <QtGui> #include "dialogi.h" Dialogi::Dialogi(QWidget *parent) : QDialog(parent) { setupUi(this); QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");//rajoitetaan sallittuja kirjaimia ja numeroita lineEdit->setValidator(new QRegExpValidator(regExp, this)); connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); } void Dialogi::on_lineEdit_textChanged() { okButton->setEnabled(lineEdit->hasAcceptableInput()); }
Tai tältä
#include <QtGui> #include "dialogi.h" Dialogi::Dialogi(QWidget *parent): QDialog(parent) { setupUi(this); buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}"); lineEdit->setValidator(new QRegExpValidator(regExp, this)); connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); } void Dialogi::on_lineEdit_textChanged() { buttonBox->button(QDialogButtonBox::Ok)->setEnabled(lineEdit->hasAcceptableInput()); }
Wizardin luoma pääohjelma
#include <QApplication> #include "dialogi.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); Dialogi *dialog = new Dialogi; dialog->show(); return app.exec(); }