利用Qt的QDateTimeEdit设置起始时间(即开始时间大于结束时间)

来源:互联网 发布:张大宇数据 编辑:程序博客网 时间:2024/06/05 09:40

利用Qt的QDateTimeEdit设置起始时间(即开始时间大于结束时间)

1.头文件qdatetimeeditpractise.h

#ifndef QDATETIMEEDITPRACTISE_H#define QDATETIMEEDITPRACTISE_H#include <QtGui/QWidget>#include "ui_qdatetimeeditpractise.h"class QDateTimeEditPractise : public QWidget{    Q_OBJECTpublic:    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,望各位大神能够给出答案。

0 0
原创粉丝点击