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

Compare with Current View Page History

« Previous Version 17 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 "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
     ui->pushButton->setEnabled(false);
     //hyväksytään A-Z tai a-z alussa, seuraavaksi 1-9 numerot ja sitten 0-9 nollasta kahteen numeroa
     QRegExp hyvaksytytMerkit("[A-Za-z][1-9][0-9]{0,2}");
     // yhditetään validaattori tekstiruutuun
     ui->lineEdit->setValidator(new QRegExpValidator(hyvaksytytMerkit, this));


}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::on_pushButton_clicked()
{
       ui->lineEdit_2->setText(apu);
}


void Dialog::on_lineEdit_textChanged(const QString &arg1)
{
    apu=arg1;
    ui->pushButton->setEnabled(false);
    ui->pushButton->setEnabled(ui->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.