根据我对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;
}即使没有出现错误,也没有小部件/窗口出现。我没有得到什么?
发布于 2019-03-22 14:09:19
调用显示方法
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();
}
}发布于 2019-03-22 13:51:24
试试这个:
#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
}发布于 2019-03-22 15:32:24
您正在创建小部件,但没有调用适当的方法来显示它。在Qt中,有一个用于该QWidget::show()的专用方法。根据文档,此方法:
显示小部件及其子部件。
作为替代,您可以调用showFullScreen、showMaximized或setVisible(true)。
所以,试着:
QDate d1(2002,4,1);
QDateEdit dateEdit(d1,0);
dateEdit.show();https://stackoverflow.com/questions/55300789
复制相似问题