DateTimeEdit 的基本應用
前言
在應用程式中有時會需要日期與時間的輸入, Qt 提供了 DateTimeEdit 來解決輸入日期與時間,在此把學習的過程做個紀錄。內容
先到 [ GitLab ] HelloQt 下載範例,這次應用的專案路徑(HelloQt' directory)/DateTimeEdit/Basic,在 Qt Creator 開啟設計介面會看到以下
範例的設計介面 |
圖中左側有 DateTimeEdit 在工具箱的位置,執行結果如下
範例的執行結果 |
範例會有兩個 DateTimeEdit ,上方使用 12 小時的方式來顯示,下方使用 24 小時的方式來顯示,可以透過 DateTimeEdit 的屬性來改變, DateTimeEdit 的屬性如下圖
DateTimeEdit 的屬性 |
如圖所標示的"displayFormat",透過改變該屬性就可以改變顯示的格式,顯示格式可參考下圖
官方網站的格式說明截圖 |
接著看程式的操作,看到 MainWindow::MainWindow() ,程式碼如下
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); // connect( ui->dateTimeEdit1 , &QDateTimeEdit::dateTimeChanged , this , &MainWindow::onDateTimeEdit1dateTimeChanged ); connect( ui->dateTimeEdit2 , &QDateTimeEdit::dateTimeChanged , this , &MainWindow::onDateTimeEdit2dateTimeChanged ); // ui->dateTimeEdit1->setDate( QDate( 2020 , 6 , 6 ) ); ui->dateTimeEdit1->setTime( QTime( 18 , 30 ) ); }
程式的開頭對兩個 DateTimeEdit 做事件綁定,接著會對上方的 DateTimeEdit 直接對 Date (日期) 與 time (時間) 做輸入,分別透過 setDate() 與 setTime() ,參數很直覺就不多做說明,事件的程式碼如下
void MainWindow::onDateTimeEdit1dateTimeChanged(const QDateTime &datetime) { int y,m,d; ui->dateTimeEdit1->date().getDate(&y,&m,&d); qDebug( "New dateTimeEdit1's date:%ld_%ld_%ld" , y , m , d); // qDebug( "New dateTimeEdit1's time:%ld_%ld_%ld" , ui->dateTimeEdit1->time().hour(), ui->dateTimeEdit1->time().minute(), ui->dateTimeEdit1->time().second() ); } void MainWindow::onDateTimeEdit2dateTimeChanged(const QDateTime &datetime) { int y,m,d; ui->dateTimeEdit2->date().getDate(&y,&m,&d); qDebug( "New dateTimeEdit2's date:%ld_%ld_%ld" , y , m , d); // qDebug( "New dateTimeEdit2's time:%ld_%ld_%ld" , ui->dateTimeEdit2->time().hour(), ui->dateTimeEdit2->time().minute(), ui->dateTimeEdit2->time().second() ); }
取得 date 是透過 getDate() 來取得,不過也可以透過 year() 、 month() 與 day() 來個別取得,time 的取得分別透過 hour() 、 minute() 與 second() 來取得,要注意 hour() 內定是 24 小時不管顯示模式是否為 12 小時顯示或是 24 小時顯示。