DateTimeEdit в QML как в Qtwidgets - PullRequest
0 голосов
/ 27 марта 2019

В QtWidgets у нас есть нечто, называемое QDateTimeEdit, как показано на рисунке ниже

enter image description here

есть ли у нас что-то похожее в QML, которое делает это? Я искал в Интернете и не смог найти ни одного.

1 Ответ

1 голос
/ 27 марта 2019

В QML нет эквивалента.Но вы можете легко создать свой собственный виджет с TextField и пользовательским валидатором:

В QML:

TextField {
    text : "01/01/1970 00:00:00"
    inputMask: "99/99/9999 99:99:99"
    validator: DateTimeValidator {}
    }

В C ++:

// datetimevalidator.h
#include <QValidator>
#include <QDateTime>

class DateTimeValidator: public QValidator
{
public:
    DateTimeValidator();

    State validate(QString& input, int& pos) const;
};
// datetimevalidator.cpp
#include <datetimevalidator.h>
DateTimeValidator::DateTimeValidator(): QValidator()
{}

QValidator::State DateTimeValidator::validate(QString& input, int& pos) const
{
     QDateTime dt = QDateTime::fromString(input, "MM/dd/yyyy HH:mm:ss");
     if (dt.isNull()) // If null, the input cannot be parsed
     {
         return QValidator::Invalid;
     }
     return QValidator::Acceptable;
}

В main () зарегистрируйте свой валидатор, чтобы иметь возможность использовать его в QML:

#include "datetimevalidator.h"

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    qmlRegisterType<DateTimeValidator>("my.components", 1, 0, "DateTimeValidator");
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...