日歷與時間
1、QCalendar
QCalendar是一個日歷控件,它提供了一個基于月份的視圖,允許用戶通過鼠標或鍵盤選擇日期,默認選中的是今天的日期。也可以對日歷的日期范圍進行規(guī)定。
QCalendar類中的常用方法如表1所示。

實例演示1:QCalendar的使用
運行程序,顯示效果如下圖所示。

代碼分析:
在這個例子中有日歷控件和標簽控件,當前選定的日期顯示在標簽控件中。
以下代碼創(chuàng)建了QCalendarWidget組件,并設(shè)置該日歷控件的最大日期和最小日期。
從窗口組件中選定一個日期,會發(fā)射一個QCore.QDate信號,下面代碼將此信號連接到用戶定義的showDate()槽函數(shù)。
接下來,通過調(diào)用selectedDate()方法檢索選定的日期,然后將日期對象轉(zhuǎn)換成為指定格式字符串,將其設(shè)置為標簽控件內(nèi)容。
2、QDateTimeEdit是一個允許用戶編輯日期時間的控件,可以使用鍵盤和上、下箭頭按鈕來增加或減少日期時間值。比如,當使用鼠標選中QDateTimeEdit中的年份時,可以使用鍵盤上的上、下鍵來改變數(shù)值。
QDateTimeEdit通過setDisplayFormat()函數(shù)來設(shè)置顯示的日期時間格式。
QDateTimeEdit類中的常用方法如下表所示。

QDateTimeEdit類中常用的信號如下表所示。

1)QDateTimeEdit的子類
QDateEdit和QTimeEdit類均繼承自QDateTimeEdit類,它們的許多特性和功能都由QDateTimeEdit類提供。QDateEdit和QTimeEdit類的繼承結(jié)構(gòu)如下:

設(shè)置顯示格式時需要注意:QDateEdit用來編輯控件的日期,僅包括年、月、日;QTimeEdit用來編輯控件的時間,僅包括小時、分鐘和秒。
不要用QDateEdit來設(shè)置或獲取時間,也不要用QTimeEdit來設(shè)置或獲取日期。如果要同時操作日期時間,請使用QDateTimeEdit。使用它們設(shè)置顯示格式的正確方法如下;
設(shè)置彈出日歷時要注意:用來彈出日歷的類只有QDateTimeEdit和 QDateEdit,而 QTimeEdit類雖然在語法上可以設(shè)置彈出日歷,但不起作用。使用它們彈出日歷的正確方法如下:
2) 初始化QDateTimeEdit類
在默認情況下,如果QDateTimeEdit類構(gòu)造時不指定日期時間,那么系統(tǒng)會為其設(shè)置一個和本地相同的日期時間格式,并且值為2000年1月1日0時0分0秒。也可以手動指定控件顯示的日期時間。
顯示效果如圖所示。

除通過構(gòu)造函數(shù)指定所顯示的日期時間外,也可以根據(jù) QDateTimeEdit提供的槽函數(shù)來設(shè)置,比如setDateTime()、setDate()、setTime()函數(shù)。
3)設(shè)置日期時間格式
如果不想使用系統(tǒng)默認的格式,則可以通過setDisplayFormat()來自定義日期時間格式。
顯示效果如圖。

4)設(shè)置日期時間范圍
下面代碼創(chuàng)建了QDateTimeEdit對象,并設(shè)置日期時間為今天(currentDate),同時限制有效日期的范圍為:距離今天土365天。
5)彈出日歷
在默認情況下,只能通過上下箭頭來改變?nèi)掌跁r間。如果要彈出日歷控件,只需調(diào)用setCalendarPopup(True)即可。
顯示效果如下圖所示。
從圖中可以看出,單擊下拉箭頭就會彈出日歷控件。注意:由于設(shè)置了日期范圍,所以不在范圍內(nèi)的日期是無法選擇的。

6) 獲取日期時間
可以通過date()、dateTime()等方法來獲取日期時間對象,如果要獲取年、月、日等信息,則可以調(diào)用QDate的year()、month()、day()等函數(shù)。
運行,輸出結(jié)果如下:
7) 信號和槽函數(shù)
QDateTimeEdit控件常用的信號是 dateChanged . dateTimeChanged和·timeChanged,分別在改變?nèi)掌?、日期時間、時間時發(fā)射。
通過以下代碼設(shè)置控件的信號連接槽函數(shù)。
附錄: 以上所有例子源代碼如下