Qt筆記:QDate、QTextCodec、QFileDialog以及Q_OBJECT

weixin_33843409發表於2015-09-19

閒話不多說,直接記錄。


首先說一點關於訊號槽的誤解,上次那個明明發射訊號卻無法進入槽函式的原因已經查明,因為自定義的類體裡面沒有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();

相關文章