开始学习Qt时做的一个小日历,可以实现上一年、上一月、下一月、下一年的跳转,以及输入指定日期跳转(回车或点击按钮)。
在需要展示的地方使用Calendar或将QWidget提升为Calendar即可。
Calendar.h
#ifndef CALENDAR_H
#define CALENDAR_H
#include <QWidget>
#include <QDate>
#include <QDebug>
#include <QSignalMapper>
namespace Ui {
class Calendar;
}
class Calendar : public QWidget
{
Q_OBJECT
public:
Calendar(QWidget *parent = nullptr);
~Calendar();
void shownowcalender(QDate _date);
void clicked(QDate _date);
void connectSignal();
private:
Ui::Calendar *ui;
QDate _date;
QString graystyle = "QPushButton{"
"background-color:rgb(230, 230, 230);"
"color:gray;"
"font:bold;"
"border-radius:4px;"
"}"
"QPushButton:hover"
"{"
"background-color:rgba(69,80,93,0.4);"
"}"
"QPushButton:focus{border:5px solid #CFCFCF;}";
QString whitestyle = "QPushButton{"
"background-color:rgb(120, 135, 135);"
"color:white;"
"font:bold;"
"border-radius:4px;"
"}"
"QPushButton:hover"
"{"
"background-color:rgba(69,80,93,0.4);"
"}"
"QPushButton:focus{border:5px solid #CFCFCF;}";
QString _chooseDate;
signals:
void send(QString);
private slots:
void turnmonth(QString month);
void on_btn_lastyear_clicked();
void on_btn_lastmonth_clicked();
void on_btn_nextmonth_clicked();
void on_btn_nextyear_clicked();
void on_btn_choosemonth_clicked();
void on_btn_confirmed_clicked();
void on_btn_close_clicked();
void onChooseDate();
};
#endif // CALENDAR_H
Calendar.cpp
#include "Calendar.h"
#include "ui_Calendar.h"
/*
* 构造函数
*/
Calendar::Calendar(QWidget *parent)
: QWidget(parent, Qt::Popup)
, ui(new Ui::Calendar)
, _date(QDate::currentDate())
, _chooseDate()
{
ui-><