閒話不多說,直接記錄。
首先說一點關於訊號槽的誤解,上次那個明明發射訊號卻無法進入槽函式的原因已經查明,因為自定義的類體裡面沒有Q_OBJECT
所以無法納入Qt大家庭中。我發現這個巨集還有解決換行符跨平臺等問題,加了這個巨集的檔案在使用git的時候不會提示CRLF的問題,沒加的就會出現CRLF的問題。
QDate
QDate是Qt提供的日期控制元件可以獲取當前日期,如果是QDateTime的話可以精確到秒。獲取了日期之後可以設定日期顯示格式。由toString(QString format)
函式實現設定格式。
這個toString函式類似printf函式,都是把format引數裡面的特定字元替換為時間,比如y
代表year,M
代表month,由於日期時間格式裡面有兩個“m”,所以大寫M表示month,小寫m
表示minute,d
代表day,h
代表hour,s
代表second。舉個例子:
QDateTime::currentDateTime().toString("yyyy-MM-dd-h-m");
那麼返回就是2015-08-22-16-33
;
QTextCodec
為了解決中文亂碼的問題,可以通過設定本地編碼來解決,當然也可以通過QString::formLocal8bit()
解決(如果變數不多的話)。程式碼如下:
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
不過需要注意的一點就是改變本地編碼之後換行符可能跟隨變化。還是用'\n'
吧,暫時沒考慮跨平臺的問題。
QFileDialog
QFileDialog是一個可以獲取檔案路徑的類,使用它會自動彈出一個檔案選擇對話方塊。這個類同時也可以獲取資料夾路徑。
獲取資料夾路徑
QString QFileDialog::getOpenFileName();
當然獲取同目錄下多個檔案的話就是
QStringList QFileDialog::getOpenFileNames();
獲取已存在資料夾路徑
QString QFileDialog::getExistingDirectory();