Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КП - 2 часть - Лекция 3. Знакомство с QT.docx
Скачиваний:
27
Добавлен:
11.05.2015
Размер:
695.85 Кб
Скачать

Int GetAge() const;

private:

Ui::InputAgeDialog *ui;

};

#endif // INPUTAGEDIALOG_H

InputAgeDialog.cpp:

#include "inputagedialog.h"

#include "ui_inputagedialog.h"

InputAgeDialog::InputAgeDialog(QWidget *parent) :

QDialog(parent),

ui(new Ui::InputAgeDialog)

{

ui->setupUi(this);

}

void InputAgeDialog::Initialize(int age)

{

ui->m_inputTextLineEdit->setText(QString::number(age));

}

InputAgeDialog::~InputAgeDialog()

{

delete ui;

}

int InputAgeDialog::GetAge() const

{

return ui->m_inputTextLineEdit->text().toInt();

}

MainWindow.h

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include <QMessageBox>

#include "inputagedialog.h"

MainWindow::MainWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow)

{

ui->setupUi(this);

}

MainWindow::~MainWindow()

{

delete ui;

}

void MainWindow::on_m_okPushButton_clicked()

{

InputAgeDialog dialog(this);

dialog.Initialize(18);

dialog.exec();

int age = dialog.GetAge();

QMessageBox::information(this, "Возраст - CoolApplication", tr("Возраст %1").arg(age));

}

3.4 Как обработать ситуацию, когда диалог закрыли, не нажав на ОК

Например, не хочется ничего делать, пока диалог не закроют с нажатием на ОК.

void MainWindow::on_m_okPushButton_clicked()

{

InputAgeDialog dialog(this);

dialog.Initialize(18);

if (dialog.exec() == QDialog::DialogCode::Accepted)

{

int age = dialog.GetAge();

QMessageBox::information(this, "Возраст - CoolApplication", tr("Возраст %1").arg(age));

}

}

Если в диалоге не используются стандартные кнопки, а используются свои собственные, то диалог может вызвать метод Accept(): тогда он самозакроется с результатом выполненияAccepted.

3.5 Проверка данных в диалоге

В виду ограниченности времени валидаторы не будут рассматриваться. Эту тему можете посмотретьдома.

Когда пользователь нажимает на ОК, он хочет, чтобы его данные были приняты приложением. Как проверить, что введенные данные корректны?

Перекрываем метод doneвInputAgeDialog.hи добавляем метод по проверке данных.

#ifndef INPUTAGEDIALOG_H

#define INPUTAGEDIALOG_H

#include <QDialog>

namespace Ui {

class InputAgeDialog;

}

class InputAgeDialog : public QDialog

{

Q_OBJECT

public:

explicit InputAgeDialog(QWidget *parent = 0);

~InputAgeDialog();

void Initialize(int age);

int GetAge() const;

Virtual void done(int code);

private:

Ui::InputAgeDialog *ui;

bool CheckData();

};

#endif // INPUTAGEDIALOG_H

InputAgeDialog.cpp:

#include "inputagedialog.h"

#include "ui_inputagedialog.h"

#include <QMessageBox>

InputAgeDialog::InputAgeDialog(QWidget *parent) :

QDialog(parent),

ui(new Ui::InputAgeDialog)

{

ui->setupUi(this);

}

void InputAgeDialog::Initialize(int age)

{

ui->m_inputTextLineEdit->setText(QString::number(age));

}

InputAgeDialog::~InputAgeDialog()

{

delete ui;

}

int InputAgeDialog::GetAge() const

{

return ui->m_inputTextLineEdit->text().toInt();

}

bool InputAgeDialog::CheckData()

{

bool ageIsInt;

ui->m_inputTextLineEdit->text().toInt(&ageIsInt);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]