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

0

У меня есть этот виджет QDateEdit, но он всегда показывает стандартное время, например 01-01-2014 (в DD-MM-YYYY, но я могу изменить это в пользовательском интерфейсе). Но я хочу, чтобы он отображал текущее время, если открывается диалоговое окно (где этот виджет QDateEdit). Я тестировал это только на ярлыке (см. Форму void form_dialog). Но его распечатка "sa nov 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);
}

Благодарю!

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

  • 0
    Кстати, функция setCurrentDate () - это функция, которая будет работать, если приложение будет открыто. Он запускает функцию после стандартного ui-> setupUI (this)
Теги:
date
qt
edit

2 ответа

1
Лучший ответ

Во-первых, документы указывают, что объект 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);
}

Обратите внимание, что ваш компилятор сообщает о несоответствующих типах объектов в приведенном выше сообщении об ошибке.

2

Если вы хотите показать текущую дату, когда появится диалоговое окно, я бы сделал следующее:

  • обрабатывать событие show dialog,
  • получить текущую дату,
  • установите текущую дату на виджет редактирования даты.

Например:

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

    QDialog::showEvent(event);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню