首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用QDateEdit创建小部件

如何使用QDateEdit创建小部件
EN

Stack Overflow用户
提问于 2019-03-22 13:33:55
回答 3查看 273关注 0票数 1

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

代码语言:javascript
复制
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;
}

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-22 14:09:19

调用显示方法

代码语言:javascript
复制
dateEdit.show();

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

只要做:

代码语言:javascript
复制
QDateEdit dateEdit(d1,0);
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()。

源代码:

代码语言:javascript
复制
QString QInputDialog::getText(QWidget *parent, const QString &title, const QString &label,
                              QLineEdit::EchoMode mode, const QString &text, bool *ok,
                              Qt::WindowFlags flags, Qt::InputMethodHints inputMethodHints)
{
    QAutoPointer<QInputDialog> dialog(new QInputDialog(parent, flags));
    dialog->setWindowTitle(title);
    dialog->setLabelText(label);
    dialog->setTextValue(text);
    dialog->setTextEchoMode(mode);
    dialog->setInputMethodHints(inputMethodHints);
    const int ret = dialog->exec();  // <== here!!!!
    if (ok)
        *ok = !!ret;
    if (ret) {
        return dialog->textValue();
    } else {
        return QString();
    }
}
票数 1
EN

Stack Overflow用户

发布于 2019-03-22 13:51:24

试试这个:

代码语言:javascript
复制
#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
}
票数 0
EN

Stack Overflow用户

发布于 2019-03-22 15:32:24

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

显示小部件及其子部件。

作为替代,您可以调用showFullScreenshowMaximizedsetVisible(true)

所以,试着:

代码语言:javascript
复制
QDate d1(2002,4,1);
QDateEdit dateEdit(d1,0);
dateEdit.show();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55300789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档