Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QInputDialog和QMessageBox_C++_Qt_Dialog_Qmessagebox_Qdate - Fatal编程技术网

C++ QInputDialog和QMessageBox

C++ QInputDialog和QMessageBox,c++,qt,dialog,qmessagebox,qdate,C++,Qt,Dialog,Qmessagebox,Qdate,我正在为使用Qt框架的考试做准备,我想知道如何以一种基本的方式使用QInputDialog和QMessageBox(我的考试是手工编写的代码) QtaPI在使用上确实令人费解,对我的项目来说也不错,因为我可以用一种非常“黑客”的方式完成我想要的东西,我的一本关于这个主题的书布局非常糟糕 让我直截了当地说,在这种情况下,使用QInputDialog和QMessageBox的干净方法是什么: #include <QApplication> #include <QInputDialo

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

QtaPI在使用上确实令人费解,对我的项目来说也不错,因为我可以用一种非常“黑客”的方式完成我想要的东西,我的一本关于这个主题的书布局非常糟糕

让我直截了当地说,在这种情况下,使用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();
}
#包括
#包括
#包括
#包括
内部计算(QDate id){
int years=QDate::currentDate().year()-id.year();
int days=QDate::currentDate().daysTo(QDate
(QDate::currentDate().year(),id.month(),id.day());
如果(天数>0)
年--;
回归年
}
int main(int argc,char*argv[]){
质量保证申请a(argc、argv);
/*我想把我的对话框和消息框放在这里的某个地方*/
返回a.exec();
}
对于我的QInputDialog,我希望用户给出他们的出生日期(不要担心输入验证) 我想使用QMessageBox显示用户的年龄

我只是不明白在一个基本的情况下,QInputDialog和QMessageBox需要哪些参数,因为似乎没有任何例子


我将如何完成此任务?

您可以执行以下操作:

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)));
    }
    [..]

您可以执行以下操作:

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(“年龄是”+QString::number(年龄))
?我只是在寻找更简单更容易的方法来写下来,以便理解……我建议您阅读官方文档中关于静态方法参数的内容。这里描述了所有参数,QLineEdit::Normal之后的参数是否表示行中的默认文本?@BarryDoyle,是的。你可以用不同的值来试验自己,看看它们是如何影响的。太棒了,谢谢你了,我真的不知道从哪里开始,当涉及到这个东西:)对于QMessageBox,我可以把最后一个参数写成
QString(“年龄是”+QString::number(年龄))
?我只是在寻找更简单更容易的方法来写下来,以便理解……我建议您阅读官方文档中关于静态方法参数的内容。这里描述了所有的参数