QInputDialog и QMessageBox

Я готовлюсь к экзамену с использованием фреймворка Qt, и я хотел бы знать, как использовать QInputDialog и QMessageBox базовым способом (мои экзамены написаны от руки)

API Qt действительно сбивает с толку, чтобы понять, когда дело доходит до использования, и это было хорошо для моих проектов, потому что я мог выполнить то, что хотел, действительно "хакерским" способом, мой набор книг по этому вопросу очень плохо изложен...

Позвольте мне перейти к тому, что будет чистым способом использования QInputDialog и QMessageBox в этом сценарии:

#include <QApplication>
#include <QInputDialog>
#include <QDate>
#include <QMessageBox>

int computeAge(QDate id) {
  int years = QDate::currentDate().year() - id.year();
  int days = QDate::currentDate().daysTo(QDate
              (QDate::currentDate().year(), id.month(), id.day()));
  if(days > 0) 
    years--;
  return years
}

int main(int argc, char *argv[]) {
  QApplication a(argc, argv);
  /*  I want my QInputDialog and MessageBox in here somewhere */
  return a.exec();
}

Для моего QInputDialog я хочу, чтобы пользователь указал дату своего рождения (не беспокойтесь о проверке ввода). Я хочу использовать QMessageBox, чтобы показать возраст пользователя.

Я просто не понимаю, какие параметры нужно вводить в QInputDialog и QMessageBox в базовом случае, например, потому что, кажется, нет никаких примеров.

Как бы я это сделал?

1 ответ

Решение

Вы можете сделать что-то вроде:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    bool ok;
    // Ask for birth date as a string.
    QString text = QInputDialog::getText(0, "Input dialog",
                                         "Date of Birth:", QLineEdit::Normal,
                                         "", &ok);
    if (ok && !text.isEmpty()) {
        QDate date = QDate::fromString(text);
        int age = computeAge(date);
        // Show the age.
        QMessageBox::information (0, "The Age",
                                  QString("The age is %1").arg(QString::number(age)));
    }
    [..]
Другие вопросы по тегам