如何使用QDateEdit创建小部件

时间:2019-03-22 13:33:55

标签: c++ qt widget

根据我对QDateEdit API文档的理解,它创建了一个用于编辑日期的小部件。它仅有的公共成员是构造函数。因此,我基本上使用QT创建器创建了QT小部件应用程序,并添加了以下代码。

QTextStream cout(stdout);
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QDate d1(2002,4,1)

    QDateEdit dateEdit(d1,0);

    return EXIT_SUCCESS;
}

即使没有给出错误,也不会出现任何小部件/窗口。我没有得到什么?

3 个答案:

答案 0 :(得分:1)

调用show方法

where schcd = 123

这是必需的,因为QDateEdit是一个小部件,默认情况下不会显示...

只需:

dateEdit.show();

编辑:

对您的评论,还有其他问题;

  

为什么像QString = InputDialog :: getText(....)这样的行不需要.show()

好吧,getText函数在内部进行调用:

文档: https://doc.qt.io/archives/qt-4.8/qdialog.html#exec

  

int QDialog :: exec()

     

将对话框显示为模式对话框,直到用户将其关闭为止,该对话框一直处于阻塞状态。   该函数返回DialogCode结果。

     

如果对话框是应用程序模式,则用户无法与任何   直到它们关闭对话框,然后再打开同一应用程序中的其他窗口。如果   该对话框是窗口模式的,只有与父窗口的交互是   对话框打开时被阻止。默认情况下,对话框为   应用程序模式。

     

另请参阅open(),show(),result()和setWindowModality()。

源代码:

QDateEdit dateEdit(d1,0);
dateEdit.show();

答案 1 :(得分:0)

尝试一下:

#include <QApplication>
#include <QDate>
#include <QDateEdit>

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

    QDate d1(2002,4,1);

    QDateEdit dateEdit(d1,0);
    dateEdit.show(); // Call show()

    return a.exec(); // Run events loop
}

答案 2 :(得分:0)

您正在创建窗口小部件,但是没有调用适当的方法来显示它。在Qt中,有一个专用的方法QWidget::show()。根据文档,此方法:

  

显示小部件及其子小部件。

或者,您可以调用showFullScreenshowMaximizedsetVisible(true)

所以,尝试:

QDate d1(2002,4,1);
QDateEdit dateEdit(d1,0);
dateEdit.show();