利用Qt的QDateTimeEdit设置起始时间(即开始时间大于结束时间)
1.头文件qdatetimeeditpractise.h
#ifndef QDATETIMEEDITPRACTISE_H
#define QDATETIMEEDITPRACTISE_H
#include <QtGui/QWidget>
#include "ui_qdatetimeeditpractise.h"
class QDateTimeEditPractise : public QWidget
{
Q_OBJECT
public:
QDateTimeEditPractise(QWidget *parent = 0, Qt::WFlags flags = 0);
~QDateTimeEditPractise();
QDateTimeEdit * endDateTimeEdit;
QDateTimeEdit * startDateTimeEdit;
public slots:
void setStartDateTime();//设置起始时间的范围
void setEndDateTime();//设置结束时间的范围
private:
Ui::QDateTimeEditPractiseClass ui;
};
#endif // QDATETIMEEDITPRACTISE_H
2.cpp文件qdatetimeeditpractise.cpp
#include "qdatetimeeditpractise.h"
#include <QDateTimeEdit>
#include <QDebug>
QDateTimeEditPractise::QDateTimeEditPractise(QWidget *parent, Qt::WFlags flags)
: QWidget(parent, flags)
{
ui.setupUi(this);
startDateTimeEdit = ui.startDateTimeEdit;
endDateTimeEdit = ui.endDateTimeEdit;
startDateTimeEdit->setDateTime(QDateTime::currentDateTime().addDays(-1));
endDateTimeEdit->setDateTime(QDateTime::currentDateTime());
connect(startDateTimeEdit,SIGNAL(dateTimeChanged(QDateTime)),this, SLOT(setEndDateTime()));
connect(endDateTimeEdit,SIGNAL(dateTimeChanged(QDateTime)),this,SLOT(setStartDateTime()));
}
void QDateTimeEditPractise::setStartDateTime()
{
startDateTimeEdit->setMaximumDateTime(endDateTimeEdit->dateTime());
}
void QDateTimeEditPractise::setEndDateTime()
{
endDateTimeEdit->setMinimumDateTime(startDateTimeEdit->dateTime());
}
QDateTimeEditPractise::~QDateTimeEditPractise()
{
}
虽然效果实现出来了,但是无法理解的是:为什么在槽函数中添加了和信号一样的参数后,程序编译报错。例如:connect(startDateTimeEdit,SIGNAL(dateTimeChanged(QDateTime)),this, SLOT(setEndDateTime(QDateTime)));而且信号和槽函数采用引用类型的参数,编译也会报错,例如:connect(startDateTimeEdit,SIGNAL(dateTimeChanged(QDateTime &)),this, SLOT(setEndDateTime(QDateTime)));
我看Qt的帮助文档中的信号函数的参数就是引用类型???本人使用的Qt版本是4.8.6,望各位大神能够给出答案。