【问题标题】:QInputDialog and QMessageBoxQInputDialog 和 QMessageBox
【发布时间】:2015-07-08 18:06:07
【问题描述】:

我正在为使用 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,因为那里似乎没有任何示例。

我将如何做到这一点?

【问题讨论】:

    标签: c++ qt dialog qmessagebox qdate


    【解决方案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)));
        }
        [..]
    

    【讨论】:

    • QLineEdit::Normal 后面的那个参数是否代表了该行的默认文本?
    • @BarryDoyle,是的。您可以尝试不同的值,看看它们的效果。
    • 太棒了,谢谢伙计,当涉及到这些东西时,我真的不知道从哪里开始 :)
    • 对于 QMessageBox,我是否也可以将最终参数写为QString("The age is " + QString::number(age))?我只是在努力寻找更简单的方法来写下来以便理解......
    • 我建议您阅读官方文档中有关静态方法的参数。所有的论点都在那里描述
    猜你喜欢
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多