| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | #include "scopecalendarbtn.h"#include "calendarex.h"#include <QDebug>ScopeCalendarBtn::ScopeCalendarBtn(QWidget *parent)     : QPushButton(parent)    , m_dtFrom(QDate::currentDate())    , m_dtTo(QDate::currentDate())    , m_dtMin(QDate(1,1,1))    , m_dtMax(QDate(9999,12,31))    , m_strFormat("%1 - %2"){    connect(this, &QPushButton::clicked, this, &ScopeCalendarBtn::OnPopBtnClicked);    SetScope(m_dtFrom, m_dtTo);}void ScopeCalendarBtn::SetMinimumDate(const QDate &date){    m_dtMin = date;    m_dtMax = qMax(m_dtMin, m_dtMax);    m_dtFrom = qMax(m_dtMin, m_dtFrom);    m_dtTo = qMax(m_dtMin, m_dtTo);}void ScopeCalendarBtn::SetMiaxmumDate(const QDate &date){    m_dtMax = date;    m_dtMin = qMin(m_dtMax, m_dtMin);    m_dtFrom = qMin(m_dtMax, m_dtFrom);    m_dtTo = qMin(m_dtMax, m_dtTo);}void ScopeCalendarBtn::SetScope(const QDate &from, const QDate &to){    m_dtFrom = qBound(m_dtMin, from, m_dtMax);    m_dtTo = qBound(m_dtMin, to, m_dtMax);    QString text = QString(m_strFormat).arg(m_dtFrom.toString("yyyy-MM-dd"), m_dtTo.toString("yyyy-MM-dd"));    setText(text);}void ScopeCalendarBtn::OnPopBtnClicked(){    ScopedCalendar *pC = new ScopedCalendar(m_dtFrom, m_dtTo);    pC->show();    pC->positionCalendarPopup(this);    if(m_dtMin.isValid()) pC->SetMinimumDate(m_dtMin);    if(m_dtMax.isValid()) pC->SetMaximumDate(m_dtMax);    connect(pC, &ScopedCalendar::sig_ScopeSelected, this, &ScopeCalendarBtn::OnScopeSelected);}void ScopeCalendarBtn::OnScopeSelected(const QDate &from, const QDate &to){    SetScope(from, to);    emit sig_ScopeSelected(from, to);}void ScopeCalendarBtn::paintEvent(QPaintEvent *event){//    PainterEx painter(this);//    painter.SetBrushOnly(Qt::gray);//    painter.drawRect(rect());    QPushButton::paintEvent(event);}
 |