使用C ++在QDateEdit上设置日期

时间:2013-11-22 18:35:35

标签: c++ qt date edit

我有这个QDateEdit小部件,但它始终显示标准时间,如01-01-2014(在DD-MM-YYYY中,但我可以在UI中更改此内容)。但是如果打开对话框(此QDateEdit小部件所在的位置),我希望它显示当前时间。 我在标签上测试了这个(参见void form_dialog)。但它的出版物是“2013年11月23日”。但我想要它像23-11-2013。它也给了我一个错误:

QDateTimeEdit::setDate' : cannot convert parameter 1 from 'QString' to 'const QDate &'
Reason: cannot convert from 'QString' to 'const QDate'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

所以

void form_dialog::setCurrentDate()
{
    QDate date = QDate::currentDate();
    QString dateString = date.toString();
    ui->DateEdit->setDate(dateString);
}

谢谢!

使用视觉效果可能很有用,下面显示的小部件应显示当前日期:
enter image description here

2 个答案:

答案 0 :(得分:2)

首先,文档表明QDateEdit对象具有参数化构造函数,允许在构造时初始化日期:

QDateEdit::QDateEdit ( const QDate & date, QWidget * parent = 0 )

根据您实例化QDateEdit对象的方式,您可能还会考虑将QDateEdit子类化为您自己的小部件,并在小部件的构造函数中设置QDateEdit对象。但是这种方法可能有点过分(没有代码,很难推测什么是最好的......)

编辑后的问题提供了更多内容。 QDateEdit文档表明QDateEdit方法接受QDate对象,而不是QString对象。所以你的功能应该更像是:

void form_dialog::setCurrentDate()
{
    QDate date = QDate::currentDate();
    ui->DateEdit->setDate(date);
}

请注意,您的编译器在上面的错误消息中报告了不匹配的对象类型。

答案 1 :(得分:2)

如果要在对话框出现时显示当前日期,我会执行以下操作:

  • 处理对话框的show事件,
  • 获取当前日期,
  • 将当前日期设置为日期编​​辑小部件。

例如:

void MyDialog::showEvent(QShowEvent * event)
{
    QDate date = QDate::currentDate();
    m_dateEdit->setDate(date); // sets the current date to date edit.

    QDialog::showEvent(event);
}