...
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ä
Code Block |
---|
#ifndef DIALOG_H #define DIALOG_H #include <QDialog> #include "ui_dialogi.h" //luokkanamespace onUi tehty{ perimällä se QDialog ja käyttöliittymä luokista, kyseessä on siis moniperintäclass Dialog; } class DialogiDialog : public QDialog, public Ui::Dialogi { Q_OBJECT public: explicit DialogiDialog(QWidget *parent = 0); private slots: void on_lineEdit_textChanged ~Dialog(); }; #endif |
Ja luokan toteutus tältä
Code Block |
---|
#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());
}
|
QString apu;
private slots:
void on_pushButton_clicked();
void on_lineEdit_textChanged(const QString &arg1);//tämä funktio ajetaan aina läpi tekstin muuttuessa lineEdit ruudussa
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
|
Ja luokan toteutus Tai tältä
Code Block |
---|
#include <QtGui>"dialog.h" #include "dialogiui_dialog.h" DialogiDialog::DialogiDialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { setupUi ui->setupUi(this); buttonBox->button(QDialogButtonBox::Ok)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 regExphyvaksytytMerkit("[A-Za-z][1-9][0-9]{0,21}"); // yhditetään validaattori eli oikeellisuudeen tarkastaja lineEdittekstiruutuun ui->lineEdit->setValidator(new QRegExpValidator(regExphyvaksytytMerkit, this)); connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()))} Dialog::~Dialog() { delete ui; } void DialogiDialog::on_lineEditpushButton_textChangedclicked() { buttonBox->button(QDialogButtonBox::Ok)->setEnabled(lineEdit->hasAcceptableInput()ui->lineEdit_2->setText(apu); } |
Wizardin luoma pääohjelma
Code Block |
---|
#include <QApplication> #include "dialogi.h" int main(int argc, char *argv[]void Dialog::on_lineEdit_textChanged(const QString &arg1) { QApplication app(argc, argv) apu=arg1; // jos syote Dialogion *dialog = new Dialogi; dialog->show(); return app.exec(hyvaksyttavissa, "enabloidaan" painonappi ui->pushButton->setEnabled(ui->lineEdit->hasAcceptableInput()); } |