Установить дату на QDateEdit с C ++

Обновить

April 2019

Просмотры

11.2k раз

1

У меня есть этот QDateEdit виджет, но он показывает всегда стандартное время, как 01-01-2014 (в ДД-ММ-ГГГГ, но я могу изменить это в UI). Но я хочу, чтобы отобразить текущее время, если диалоговое окно (где это QDateEdit виджет) открыто. Я проверил это только на этикетке (см порового form_dialog). Но его printss из «са 23 ноября 2013». Но я хочу, это как 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);
}

Спасибо!

Может быть, его полезно иметь что-то визуальное, виджет, который отображается ниже должен отображать текущую дату:
введите описание изображения здесь

2 ответы

2

If you want to show the current date when your dialog comes up, I would do the following:

  • handle the dialog's show event,
  • get the current date,
  • set current date to the date edit widget.

For example:

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

    QDialog::showEvent(event);
}
2

First, the docs indicate that the QDateEdit object has parameterized constructor that permits the date to be initialized on construction:

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

Depending upon how you have instantiated your QDateEdit object, you might also consider subclassing QDateEdit with your own widget, and the setting up the QDateEdit object in your widget's constructor. This method may overkill, though (without code, it's tough to speculate what is best...)

The edited question provides more to go on. The QDateEdit docs indicate that a QDateEdit method accepts a QDate object, not a QString object. So your function should appear something more like:

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

Note that your compiler is reporting the mismatched object types in the error message above.