#include "MDateWidget.h"
#include <QLineEdit>
#include <QToolButton>
#include <QCalendarWidget>
#include <QHBoxLayout>
#include <QGroupBox>
MDateWidget::MDateWidget(QWidget *parent) :
QWidget(parent)
{
dateLineEdit = new QLineEdit;
toolButton = new QToolButton;
QHBoxLayout *dateLayout = new QHBoxLayout;
dateLayout->setMargin(0);
dateLayout->setSpacing(0);
dateLayout->addWidget(dateLineEdit);
dateLayout->addWidget(toolButton);
dateGroupBox = new QGroupBox;
dateGroupBox->setLayout(dateLayout);
connect(toolButton,SIGNAL(clicked(bool)),this,SLOT(toolBtnClickedSlot(bool)));
calendarWidget = new QCalendarWidget;
calendarWidget->setWindowFlags(Qt::Popup);
//calendarWidget->setHeaderVisible(false);
//calendarWidget->setStyleSheet(tr("background-color:lightblue;"));
QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->setMargin(0);
mainLayout->setSpacing(0);
mainLayout->addWidget(dateGroupBox);
mainLayout->addStretch();
this->setLayout(mainLayout);
}
MDateWidget::~MDateWidget()
{
if(dateLineEdit != NULL)
{
delete dateLineEdit;
dateLineEdit = NULL;
}
if(toolButton != NULL)
{
delete toolButton;
toolButton = NULL;
}
if(dateGroupBox != NULL)
{
delete dateGroupBox;
dateGroupBox = NULL;
}
if(calendarWidget != NULL)
{
delete calendarWidget;
calendarWidget = NULL;
}
}
void MDateWidget::toolBtnClickedSlot(bool)
{
if(calendarWidget != NULL){
// Translates the widget coordinate pos to global screen coordinates.
calendarWidget->move(this->mapToGlobal(QPoint(0, height())));
//calendarWidget->move(this->mapToGlobal(QPoint(0,0)));
calendarWidget->setVisible(true);
}
}
实现效果: