вызовите метод показа
dateEdit.show();
это требуется, потому что QDateEdit является виджетом и не будет отображаться по умолчанию ...
просто сделай:
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 ().
исходный код:
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();
}
}