1. 程式人生 > >利用Qt的QDateTimeEdit設定起始時間(即開始時間大於結束時間)

利用Qt的QDateTimeEdit設定起始時間(即開始時間大於結束時間)

利用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,望各位大神能夠給出答案。