...
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. tiedostoa, huomaat sieltä löytyvän samojen asioiden kuin edellisessä tehtävässä tehtiin ohjelmallisesti.
Dialogin ohsikkotiedosto näyttää tältä
Code Block |
---|
#ifndef DIALOG_H #define DIALOG_H #include <QDialog> #include "ui_dialogi.h" namespace Ui { class Dialog; } class DialogiDialog : public QDialog, public Ui::Dialogi { Q_OBJECT public: explicit DialogiDialog(QWidget *parent = 0); ~Dialog(); 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 #endif // DIALOG_H |
Ja luokan toteutus tältäsdsad
Code Block |
---|
#include <QtGui>"dialog.h" #include "dialogiui_dialog.h" DialogiDialog::DialogiDialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { setupUi 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 regExphyvaksytytMerkit("[A-Za-z][1-9][0-9]{0,21}"); //rajoitetaan sallittujayhditetään kirjaimiavalidaattori jaeli numeroita oikeellisuudeen tarkastaja lineEdittekstiruutuun ui->lineEdit->setValidator(new QRegExpValidator(regExphyvaksytytMerkit, this)); connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())) } Dialog::~Dialog() { delete ui; } void DialogiDialog::on_lineEditpushButton_textChangedclicked() { okButton->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[]) { QApplication app(argc, argv); Dialogi *dialog = new Dialogi; dialog->show(); return app.exec(void Dialog::on_lineEdit_textChanged(const QString &arg1) { apu=arg1; // jos syote on hyvaksyttavissa, "enabloidaan" painonappi ui->pushButton->setEnabled(ui->lineEdit->hasAcceptableInput()); } |