⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qdatetimeedit.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
{    Q_D(const QDateTimeEdit);    return d->minimum.toTime();}void QDateTimeEdit::setMinimumTime(const QTime &min){    Q_D(QDateTimeEdit);    if (min.isValid()) {        const QVariant m(QDateTime(d->minimum.toDate(), min));        d->setRange(m, (d->variantCompare(d->maximum, m) > 0 ? d->maximum : m));    }}void QDateTimeEdit::clearMinimumTime(){    setMinimumTime(QDATETIMEEDIT_TIME_MIN);}/*!  \property QDateTimeEdit::maximumTime  \brief the maximum time of the date time edit  When setting this property, the \l minimumTime is adjusted if  necessary to ensure that the range remains valid. If the time is  not a valid QTime object, this function does nothing.  \sa minimumTime, minimumDate, maximumDate, setTimeRange()*/QTime QDateTimeEdit::maximumTime() const{    Q_D(const QDateTimeEdit);    return d->maximum.toTime();}void QDateTimeEdit::setMaximumTime(const QTime &max){    Q_D(QDateTimeEdit);    if (max.isValid()) {        const QVariant m(QDateTime(d->maximum.toDate(), max));        d->setRange((d->variantCompare(d->minimum, m) < 0 ? d->minimum : m), m);    }}void QDateTimeEdit::clearMaximumTime(){    setMaximumTime(QDATETIMEEDIT_TIME_MAX);}/*!  Convenience function to set minimum and maximum date with one  function call.  \code  setDateRange(min, max);  \endcode  is analogous to:  \code  setMinimumDate(min);  setMaximumDate(max);  \endcode  If either \a min or \a max are not valid, this function does  nothing.  \sa setMinimumDate(), maximumDate(), setMaximumDate(),  clearMinimumDate(), setMinimumTime(), maximumTime(),  setMaximumTime(), clearMinimumTime(), QDate::isValid()*/void QDateTimeEdit::setDateRange(const QDate &min, const QDate &max){    Q_D(QDateTimeEdit);    if (min.isValid() && max.isValid()) {        d->setRange(QVariant(QDateTime(min, d->minimum.toTime())),                    QVariant(QDateTime(max, d->maximum.toTime())));    }}/*!  Convenience function to set minimum and maximum time with one  function call.  \code  setTimeRange(min, max);  \endcode  is analogous to:  \code  setMinimumTime(min);  setMaximumTime(max);  \endcode  If either \a min or \a max are not valid, this function does  nothing.  \sa setMinimumDate(), maximumDate(), setMaximumDate(),  clearMinimumDate(), setMinimumTime(), maximumTime(),  setMaximumTime(), clearMinimumTime(), QTime::isValid()*/void QDateTimeEdit::setTimeRange(const QTime &min, const QTime &max){    Q_D(QDateTimeEdit);    if (min.isValid() && max.isValid()) {        d->setRange(QVariant(QDateTime(d->minimum.toDate(), min)),                    QVariant(QDateTime(d->maximum.toDate(), max)));    }}/*!  \property QDateTimeEdit::displayedSections  \brief the currently displayed fields of the date time edit  Returns a bit set of the displayed sections for this format.  \a setDisplayFormat(), displayFormat()*/QDateTimeEdit::Sections QDateTimeEdit::displayedSections() const{    Q_D(const QDateTimeEdit);    return d->sections;}/*!  \property QDateTimeEdit::currentSection  \brief the current section of the spinbox  \a setCurrentSection()*/QDateTimeEdit::Section QDateTimeEdit::currentSection() const{    Q_D(const QDateTimeEdit);#ifdef QT_KEYPAD_NAVIGATION    if (QApplication::keypadNavigationEnabled() && d->focusOnButton)        return NoSection;#endif    return d->convertToPublic(d->sectionType(d->currentSectionIndex));}void QDateTimeEdit::setCurrentSection(Section section){    Q_D(QDateTimeEdit);    if (section == NoSection || !(section & d->sections))        return;    d->updateCache(d->value, d->displayText());    const int size = d->sectionNodes.size();    int index = d->currentSectionIndex + 1;    for (int i=0; i<2; ++i) {        while (index < size) {            if (d->convertToPublic(d->sectionType(index)) == section) {                d->edit->setCursorPosition(d->sectionPos(index));                QDTEDEBUG << d->sectionPos(index);                return;            }            ++index;        }        index = 0;    }}/*!  \since 4.3  Returns the Section at \a index.  If the format is 'yyyy/MM/dd', sectionAt(0) returns YearSection,  sectionAt(1) returns MonthSection, and sectionAt(2) returns  YearSection,*/QDateTimeEdit::Section QDateTimeEdit::sectionAt(int index) const{    Q_D(const QDateTimeEdit);    if (index < 0 || index >= d->sectionNodes.size())        return NoSection;    return d->convertToPublic(d->sectionType(index));}/*!  \since 4.3  \property QDateTimeEdit::sectionCount  \brief the number of sections displayed.  If the format is 'yyyy/yy/yyyy', sectionCount returns 3*/int QDateTimeEdit::sectionCount() const{    Q_D(const QDateTimeEdit);    return d->sectionNodes.size();}/*!  \since 4.3  \property QDateTimeEdit::currentSectionIndex  \brief the current section index of the spinbox  If the format is 'yyyy/MM/dd', the displayText is '2001/05/21' and  the cursorPosition is 5 currentSectionIndex returns 1. If the  cursorPosition is 3 currentSectionIndex is 0 etc.  \a setCurrentSection()  \sa currentSection()*/int QDateTimeEdit::currentSectionIndex() const{    Q_D(const QDateTimeEdit);    return d->currentSectionIndex;}void QDateTimeEdit::setCurrentSectionIndex(int index){    Q_D(QDateTimeEdit);    if (index < 0 || index >= d->sectionNodes.size())        return;    d->edit->setCursorPosition(d->sectionPos(index));}/*!  \since 4.2  Selects \a section. If \a section doesn't exist in the currently  displayed sections this function does nothing. If \a section is  NoSection this function will unselect all text in the editor.  Otherwise this function will move the cursor and the current section  to the selected section.  \sa currentSection()*/void QDateTimeEdit::setSelectedSection(Section section){    Q_D(QDateTimeEdit);    if (section == NoSection) {        d->edit->setSelection(d->edit->cursorPosition(), 0);    } else if (section & d->sections) {        if (currentSection() != section)            setCurrentSection(section);        d->setSelected(d->currentSectionIndex);    }}/*!  \fn QString QDateTimeEdit::sectionText(Section section) const  Returns the text from the given \a section.  ### note about not working when not Acceptable  \sa currentSection()*/QString QDateTimeEdit::sectionText(Section section) const{    Q_D(const QDateTimeEdit);    if (section == QDateTimeEdit::NoSection || !(section & d->sections)) {        return QString();    }    d->updateCache(d->value, d->displayText());    const int sectionIndex = d->absoluteIndex(section, 0);    if (sectionIndex < 0)        return QString();    return d->sectionText(d->displayText(), sectionIndex, d->sectionPos(sectionIndex));}/*!  \property QDateTimeEdit::displayFormat  \brief the format used to display the time/date of the date time edit  This format is the same as the one used described in QDateTime::toString()  and QDateTime::fromString()  Example format strings(assuming that the date is 2nd of July 1969):  \table  \header \i Format \i Result  \row \i dd.MM.yyyy    \i 02.07.1969  \row \i MMM d yy \i Jul 2 69  \row \i MMMM d yy \i July 2 69  \endtable  If you specify an invalid format the format will not be set.  \sa QDateTime::toString(), displayedSections()*/QString QDateTimeEdit::displayFormat() const{    Q_D(const QDateTimeEdit);    return isRightToLeft() ? d->unreversedFormat : d->displayFormat;}template<typename T> static inline QList<T> reverse(const QList<T> &l){    QList<T> ret;    for (int i=l.size() - 1; i>=0; --i)        ret.append(l.at(i));    return ret;}void QDateTimeEdit::setDisplayFormat(const QString &format){    Q_D(QDateTimeEdit);    if (d->parseFormat(format)) {        d->unreversedFormat.clear();        if (isRightToLeft()) {            d->unreversedFormat = format;            d->displayFormat.clear();            for (int i=d->sectionNodes.size() - 1; i>=0; --i) {                d->displayFormat += d->separators.at(i + 1);                d->displayFormat += d->sectionFormat(i);            }            d->displayFormat += d->separators.at(0);            d->separators = reverse(d->separators);            d->sectionNodes = reverse(d->sectionNodes);        }        d->formatExplicitlySet = true;        d->sections = d->convertSections(d->display);        d->clearCache();        d->currentSectionIndex = qMin(d->currentSectionIndex, d->sectionNodes.size() - 1);        const bool timeShown = (d->sections & TimeSections_Mask);        const bool dateShown = (d->sections & DateSections_Mask);        Q_ASSERT(dateShown || timeShown);        if (timeShown && !dateShown) {            setDateRange(d->value.toDate(), d->value.toDate());        } else if (dateShown && !timeShown) {            setTimeRange(QDATETIMEEDIT_TIME_MIN, QDATETIMEEDIT_TIME_MAX);            d->value = QVariant(QDateTime(d->value.toDate(), QTime()));        }        d->updateEdit();        d->_q_editorCursorPositionChanged(-1, 0);    }}/*!    \property QDateTimeEdit::calendarPopup    \brief the current calender popup showing mode.    \since 4.2    The calendar popup will be shown upon clicking the arrow button.    This property is valid only if there is a valid date display format.    \sa setDisplayFormat()*/bool QDateTimeEdit::calendarPopup() const{    Q_D(const QDateTimeEdit);    return d->calendarPopup;}void QDateTimeEdit::setCalendarPopup(bool enable){    Q_D(QDateTimeEdit);    if (enable == d->calendarPopup)        return;    d->calendarPopup = enable;#ifdef QT_KEYPAD_NAVIGATION    if (!enable)        d->focusOnButton = false;#endif    d->updateEditFieldGeometry();    update();}/*!  \reimp*/QSize QDateTimeEdit::sizeHint() const{    Q_D(const QAbstractSpinBox);    ensurePolished();    const QFontMetrics fm(fontMetrics());    int h = d->edit->sizeHint().height();    int w = 0;    QString s;    s = d->textFromValue(d->minimum) + QLatin1String("   ");    w = qMax<int>(w, fm.width(s));    s = d->textFromValue(d->maximum) + QLatin1String("   ");    w = qMax<int>(w, fm.width(s));    if (d->specialValueText.size()) {        s = d->specialValueText;        w = qMax<int>(w, fm.width(s));    }    w += 2; // cursor blinking space    QStyleOptionSpinBox opt;    initStyleOption(&opt);    QSize hint(w, h);    QSize extra(35, 6);    opt.rect.setSize(hint + extra);    extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt,                                            QStyle::SC_SpinBoxEditField, this).size();    // get closer to final result by repeating the calculation    opt.rect.setSize(hint + extra);    extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt,                                            QStyle::SC_SpinBoxEditField, this).size();    hint += extra;    opt.rect = rect();    return style()->sizeFromContents(QStyle::CT_SpinBox, &opt, hint, this)        .expandedTo(QApplication::globalStrut());}/*!  \reimp*/bool QDateTimeEdit::event(QEvent *event){    Q_D(QDateTimeEdit);    switch (event->type()) {    case QEvent::ApplicationLayoutDirectionChange: {        const bool was = d->formatExplicitlySet;        const QString oldFormat = d->displayFormat;        d->displayFormat.clear();        setDisplayFormat(oldFormat);        d->formatExplicitlySet = was;        break; }    case QEvent::StyleChange:#ifdef Q_WS_MAC    case QEvent::MacSizeChange:#endif        d->setLayoutItemMargins(QStyle::SE_DateTimeEditLayoutItem);        break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -