1

我正在使用 Qt 框架为考试做一些准备,我想知道如何以基本方式使用 QInputDialog 和 QMessageBox(我的考试是手写编码)

Qt API 在使用时真的很难理解,这对我的项目来说很好,因为我可以以一种非常“hacky”的方式完成我想要的事情,而我关于这个主题的书的布局非常糟糕......

让我直截了当地说,在这种情况下使用 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 的参数是什么,因为那里似乎没有任何示例。

我将如何做到这一点?

4

1 回答 1

5

您可以执行以下操作:

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)));
    }
    [..]
于 2015-04-29T12:50:16.330 回答