无代码网站开发平台有哪些,网站制作与建设书籍,网站建设顶层设计,景点网站建设方案基本说明
QCalendarWidget介绍#xff1a; QCalendarWidget 是 Qt 框架中提供的一个日期选择控件,用户可以通过该控件快速选择需要的日期,并且支持显示当前月份的日历。 这里#xff0c;我们继承了QCalendarWidget#xff0c;做了一些简单封装和样式调整
1.使用的IDE…基本说明
QCalendarWidget介绍 QCalendarWidget 是 Qt 框架中提供的一个日期选择控件,用户可以通过该控件快速选择需要的日期,并且支持显示当前月份的日历。 这里我们继承了QCalendarWidget做了一些简单封装和样式调整
1.使用的IDE QtCreator 2.qt 版本Desktop Qt 5.15.2 MSVC2015 64bit 3.效果图
代码
TCalendarWidget.h
#ifndef TCALENDARWIDGET_H
#define TCALENDARWIDGET_H#include QCalendarWidgetclass QPushButton;
class QLabel;class TCalendarWidget : public QCalendarWidget
{Q_OBJECTpublic:TCalendarWidget(QWidget *parent 0);~TCalendarWidget();void SetHighlightDate(QListQDate lstDate);private:void InitControl();void InitTopWidget();void SetDataLabelTimeText(int year, int month);signals:void SignalSetCalendarTime(const QDate data);private slots:void SlotBtnClicked();protected:void paintCell(QPainter *painter, const QRect rect, const QDate date) const;private:QPushButton *m_pBtnLeftYear;QPushButton *m_pBtnLeftMonth;QPushButton *m_pBtnRightYear;QPushButton *m_pBtnRightMonth;QLabel *m_pLblDate;QListQDate m_lstHighlightDate;
};#endif //_T_PROPERTY_H_
TCalendarWidget.cpp
#pragma execution_character_set(utf-8)
#include TCalendarWidget.h#include QLocale
#include QPainter
#include QTextCharFormat
#include QProxyStyle
#include QTableView
#include QLayout
#include QPushButton
#include QLabelclass QCustomStyle : public QProxyStyle
{
public:QCustomStyle(QWidget *parent) {setParent(parent);};private:void drawPrimitive(PrimitiveElement element, const QStyleOption *option,QPainter *painter, const QWidget *widget) const{if (element PE_FrameFocusRect){return;}QProxyStyle::drawPrimitive(element, option, painter, widget);}
};TCalendarWidget::TCalendarWidget(QWidget *parent): QCalendarWidget(parent)
{InitControl();
}TCalendarWidget::~TCalendarWidget()
{}void TCalendarWidget::SetHighlightDate(QListQDate lstDate)
{m_lstHighlightDate lstDate;updateCells();
}void TCalendarWidget::InitControl()
{layout()-setSizeConstraint(QLayout::SetFixedSize);setLocale(QLocale(QLocale::Chinese));setNavigationBarVisible(false);setVerticalHeaderFormat(QCalendarWidget::NoVerticalHeader);setHorizontalHeaderFormat(QCalendarWidget::SingleLetterDayNames);setStyle(new QCustomStyle(this));QTextCharFormat format;format.setForeground(QColor(#FFFFFF));format.setBackground(QColor(27, 33, 43));setHeaderTextFormat(format);setWeekdayTextFormat(Qt::Saturday, format);setWeekdayTextFormat(Qt::Sunday, format);setWeekdayTextFormat(Qt::Monday, format);setWeekdayTextFormat(Qt::Tuesday, format);setWeekdayTextFormat(Qt::Wednesday, format);setWeekdayTextFormat(Qt::Thursday, format);setWeekdayTextFormat(Qt::Friday, format);InitTopWidget();connect(this, QCalendarWidget::currentPageChanged, [this](int year, int month) {SetDataLabelTimeText(year, month);});
}void TCalendarWidget::paintCell(QPainter *painter, const QRect rect, const QDate date) const
{bool bHightlight false;foreach (QDate date1,m_lstHighlightDate){if (date1 date){bHightlight true;}}if (date selectedDate()){painter-save();painter-setRenderHint(QPainter::Antialiasing);painter-setPen(QColor(#1B212B));painter-setBrush(QColor(#1B212B));painter-drawRect(rect);painter-setPen(QColor(#2678D5));painter-setBrush(QColor(#264974));painter-drawRoundedRect(rect.x() 6, rect.y() 2, 24, 24, 2, 2);painter-setPen(bHightlight?QColor(#2678D5): QColor(#FFFFFF));painter-drawText(rect, Qt::AlignCenter, QString::number(date.day()));painter-restore();}else if (date QDate::currentDate()){painter-save();painter-setRenderHint(QPainter::Antialiasing);painter-setPen(QColor(#1B212B));painter-setBrush(QColor(#1B212B));painter-drawRect(rect);painter-setPen(QColor(#2678D5));painter-setBrush(Qt::NoBrush);painter-drawRoundedRect(rect.x()6, rect.y()2, rect.width()-12, rect.height()-4, 2, 2);painter-setPen(bHightlight ? QColor(#2678D5) : QColor(#FFFFFF));painter-drawText(rect, Qt::AlignCenter, QString::number(date.day()));painter-restore();}else if (date minimumDate() || date maximumDate()){painter-save();painter-setRenderHint(QPainter::Antialiasing);painter-setPen(Qt::NoPen);painter-setBrush(QColor(249, 249, 249));painter-drawRect(rect.x(), rect.y() 3, rect.width(), rect.height() - 6);painter-setPen(QColor(#3D4E5E));painter-drawText(rect, Qt::AlignCenter, QString::number(date.day()));painter-restore();}else{painter-save();painter-setRenderHint(QPainter::Antialiasing);painter-setPen(QColor(#1B212B));painter-setBrush(QColor(#1B212B));painter-drawRect(rect);painter-setPen(bHightlight ? QColor(#2678D5) : QColor(#FFFFFF));painter-drawText(rect, Qt::AlignCenter, QString::number(date.day()));painter-restore();}
}void TCalendarWidget::InitTopWidget()
{QWidget* pTopWidget new QWidget(this);pTopWidget-setObjectName(CalendarTopWidget);pTopWidget-setFixedHeight(36);pTopWidget-setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);QHBoxLayout* pHBoxLayout new QHBoxLayout;pHBoxLayout-setContentsMargins(20, 0, 20, 0);pHBoxLayout-setSpacing(10);m_pBtnLeftYear new QPushButton(this);m_pBtnRightYear new QPushButton(this);m_pBtnLeftMonth new QPushButton(this);m_pBtnRightMonth new QPushButton(this);m_pLblDate new QLabel(this);m_pBtnLeftYear-setObjectName(CalendarLeftYearBtn);m_pBtnRightYear-setObjectName(CalendarRightYearBtn);m_pBtnLeftMonth-setObjectName(CalendarLeftMonthBtn);m_pBtnRightMonth-setObjectName(CalendarRightMonthBtn);m_pLblDate-setObjectName(CommonTextWhite14);pHBoxLayout-addWidget(m_pBtnLeftYear);pHBoxLayout-addWidget(m_pBtnLeftMonth);pHBoxLayout-addStretch();pHBoxLayout-addWidget(m_pLblDate);pHBoxLayout-addStretch();pHBoxLayout-addWidget(m_pBtnRightMonth);pHBoxLayout-addWidget(m_pBtnRightYear);pTopWidget-setLayout(pHBoxLayout);QVBoxLayout *vBodyLayout qobject_castQVBoxLayout *(layout());vBodyLayout-insertWidget(0, pTopWidget);connect(m_pBtnLeftYear, SIGNAL(clicked()), this, SLOT(SlotBtnClicked()));connect(m_pBtnLeftMonth, SIGNAL(clicked()), this, SLOT(SlotBtnClicked()));connect(m_pBtnRightYear, SIGNAL(clicked()), this, SLOT(SlotBtnClicked()));connect(m_pBtnRightMonth, SIGNAL(clicked()), this, SLOT(SlotBtnClicked()));SetDataLabelTimeText(selectedDate().year(), selectedDate().month());
}void TCalendarWidget::SetDataLabelTimeText(int year, int month)
{m_pLblDate-setText(QString(%1年%2月).arg(year).arg(month));
}void TCalendarWidget::SlotBtnClicked()
{QPushButton *senderBtn qobject_castQPushButton *(sender());if (senderBtn m_pBtnLeftYear){showPreviousYear();}else if (senderBtn m_pBtnLeftMonth){showPreviousMonth();}else if (senderBtn m_pBtnRightYear){showNextYear();}else if (senderBtn m_pBtnRightMonth){showNextMonth();}
}样式 QString Dialog::GetQss()
{QString str QPushButton{font-family: \Microsoft YaHei\;border:none;background:transparent;}\\QWidget#CalendarTopWidget \{ \background: #1B212B; \border:none; \border-bottom: 1px solid #45596B; \} \\QPushButton#CalendarLeftYearBtn \{ \max-height:16px; \min-height:16px; \max-width:16px; \min-width:16px; \image: url(STYLESHEET_PIC_PATH/common/year_last_nor.png); \} \\QPushButton#CalendarLeftYearBtn:hover \{ \image: url(STYLESHEET_PIC_PATH/common/year_last_down.png); \} \\\QPushButton#CalendarRightYearBtn \{ \max-height:16px; \min-height:16px; \max-width:16px; \min-width:16px; \image: url(STYLESHEET_PIC_PATH/common/year_next_nor.png); \} \\QPushButton#CalendarRightYearBtn:hover \{ \image: url(STYLESHEET_PIC_PATH/common/year_next_down.png); \} \\QPushButton#CalendarLeftMonthBtn \{ \max-height:16px; \min-height:16px; \max-width:16px; \min-width:16px; \image: url(STYLESHEET_PIC_PATH/common/month_last_nor.png); \} \\QPushButton#CalendarLeftMonthBtn:hover \{ \image: url(STYLESHEET_PIC_PATH/common/month_last_down.png); \} \\QPushButton#CalendarRightMonthBtn \{ \max-height:16px; \min-height:16px; \max-width:16px; \min-width:16px; \image: url(STYLESHEET_PIC_PATH/common/month_next_nor.png); \} \\QPushButton#CalendarRightMonthBtn:hover \{ \image: url(STYLESHEET_PIC_PATH/common/month_next_down.png); \} \QLabel#CommonTextWhite14 \{ \color: #ffffff; \font-size: 14px; \} \;str.replace(STYLESHEET_PIC_PATH/common/, ://res/);return str;
}图片资源
图片下载
调用代码
Dialog::Dialog(QWidget *parent): QDialog(parent), ui(new Ui::Dialog)
{ui-setupUi(this);setWindowTitle(tr(Calendar Widget));setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);// 样式 1setStyleSheet(GetQss());m_pCalender new TCalendarWidget(this);QHBoxLayout* pMainLayout new QHBoxLayout(this);pMainLayout-setMargin(0);pMainLayout-addWidget(m_pCalender);
}
文章转载自: http://www.morning.sypby.cn.gov.cn.sypby.cn http://www.morning.bhdtx.cn.gov.cn.bhdtx.cn http://www.morning.kdhrf.cn.gov.cn.kdhrf.cn http://www.morning.ktpzb.cn.gov.cn.ktpzb.cn http://www.morning.jgmdr.cn.gov.cn.jgmdr.cn http://www.morning.sxjmz.cn.gov.cn.sxjmz.cn http://www.morning.gdljq.cn.gov.cn.gdljq.cn http://www.morning.kfwrq.cn.gov.cn.kfwrq.cn http://www.morning.mlcnh.cn.gov.cn.mlcnh.cn http://www.morning.qzmnr.cn.gov.cn.qzmnr.cn http://www.morning.hqxyt.cn.gov.cn.hqxyt.cn http://www.morning.nrqtk.cn.gov.cn.nrqtk.cn http://www.morning.tpwrm.cn.gov.cn.tpwrm.cn http://www.morning.gxwyr.cn.gov.cn.gxwyr.cn http://www.morning.qswws.cn.gov.cn.qswws.cn http://www.morning.nytpt.cn.gov.cn.nytpt.cn http://www.morning.fsrtm.cn.gov.cn.fsrtm.cn http://www.morning.dktyc.cn.gov.cn.dktyc.cn http://www.morning.ndpwg.cn.gov.cn.ndpwg.cn http://www.morning.nwljj.cn.gov.cn.nwljj.cn http://www.morning.tlbhq.cn.gov.cn.tlbhq.cn http://www.morning.wkgyz.cn.gov.cn.wkgyz.cn http://www.morning.txltb.cn.gov.cn.txltb.cn http://www.morning.mcgsq.cn.gov.cn.mcgsq.cn http://www.morning.rbnp.cn.gov.cn.rbnp.cn http://www.morning.wskn.cn.gov.cn.wskn.cn http://www.morning.qlhkx.cn.gov.cn.qlhkx.cn http://www.morning.tplht.cn.gov.cn.tplht.cn http://www.morning.glcgy.cn.gov.cn.glcgy.cn http://www.morning.xrmwc.cn.gov.cn.xrmwc.cn http://www.morning.ltbwq.cn.gov.cn.ltbwq.cn http://www.morning.wqmyh.cn.gov.cn.wqmyh.cn http://www.morning.dkslm.cn.gov.cn.dkslm.cn http://www.morning.lwdzt.cn.gov.cn.lwdzt.cn http://www.morning.huihuangwh.cn.gov.cn.huihuangwh.cn http://www.morning.zcncb.cn.gov.cn.zcncb.cn http://www.morning.qctsd.cn.gov.cn.qctsd.cn http://www.morning.xkqjw.cn.gov.cn.xkqjw.cn http://www.morning.fpkdd.cn.gov.cn.fpkdd.cn http://www.morning.jfjqs.cn.gov.cn.jfjqs.cn http://www.morning.krgjc.cn.gov.cn.krgjc.cn http://www.morning.pwdgy.cn.gov.cn.pwdgy.cn http://www.morning.pqypt.cn.gov.cn.pqypt.cn http://www.morning.drbd.cn.gov.cn.drbd.cn http://www.morning.psxcr.cn.gov.cn.psxcr.cn http://www.morning.vattx.cn.gov.cn.vattx.cn http://www.morning.rfldz.cn.gov.cn.rfldz.cn http://www.morning.lcjw.cn.gov.cn.lcjw.cn http://www.morning.mdlqf.cn.gov.cn.mdlqf.cn http://www.morning.wjpsn.cn.gov.cn.wjpsn.cn http://www.morning.lfjmp.cn.gov.cn.lfjmp.cn http://www.morning.qctsd.cn.gov.cn.qctsd.cn http://www.morning.lywys.cn.gov.cn.lywys.cn http://www.morning.mfqmk.cn.gov.cn.mfqmk.cn http://www.morning.mdgb.cn.gov.cn.mdgb.cn http://www.morning.mkkcr.cn.gov.cn.mkkcr.cn http://www.morning.kfmlf.cn.gov.cn.kfmlf.cn http://www.morning.qfnrx.cn.gov.cn.qfnrx.cn http://www.morning.wrfk.cn.gov.cn.wrfk.cn http://www.morning.pxmyw.cn.gov.cn.pxmyw.cn http://www.morning.knjj.cn.gov.cn.knjj.cn http://www.morning.kwksj.cn.gov.cn.kwksj.cn http://www.morning.jcbmm.cn.gov.cn.jcbmm.cn http://www.morning.mtgkq.cn.gov.cn.mtgkq.cn http://www.morning.lgphx.cn.gov.cn.lgphx.cn http://www.morning.qqrlz.cn.gov.cn.qqrlz.cn http://www.morning.jpzcq.cn.gov.cn.jpzcq.cn http://www.morning.dyxzn.cn.gov.cn.dyxzn.cn http://www.morning.llfwg.cn.gov.cn.llfwg.cn http://www.morning.mhpkz.cn.gov.cn.mhpkz.cn http://www.morning.gjlml.cn.gov.cn.gjlml.cn http://www.morning.qgghj.cn.gov.cn.qgghj.cn http://www.morning.bqpgq.cn.gov.cn.bqpgq.cn http://www.morning.yrjkp.cn.gov.cn.yrjkp.cn http://www.morning.rbkdg.cn.gov.cn.rbkdg.cn http://www.morning.alwpc.cn.gov.cn.alwpc.cn http://www.morning.geledi.com.gov.cn.geledi.com http://www.morning.nwjzc.cn.gov.cn.nwjzc.cn http://www.morning.fgrcd.cn.gov.cn.fgrcd.cn http://www.morning.pwppk.cn.gov.cn.pwppk.cn