You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

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 rajoittaa annettavien merkkien tyyppiä ja määrää
    QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");//hyväksytään A-Z tai a-z alussa, seuraavaksi 1-9 numerot ja sitten 0-9 nollasta kahteen numeroa
    lineEdit->setValidator(new QRegExpValidator(regExp, this));// yhditetään validaattori tekstiruutuun
    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();
}
  • No labels
You must log in to comment.