Qt學習筆記(QAction,QString格式化輸出)
在編寫介面程式時經常會用到單選項或者複選項,介面按鈕方式可以採用QCheckBox、QRadioButton配合QGroupBox實現。如果採用Qt設計師設計介面時,很容易達到這樣的效果。而另一種情況是採用選單項實現,而選單欄實現單選或者多選一般採用QAction實現。
使用QAction實現單選的方法:將多個QAction新增到QActionGroup,並將QActionGroup設定為exclusive即可,及setExclusive(true);
示例(action已經在設計師介面上定義):
/*動靜態切分演算法action的互斥選擇設定*/
QActionGroup*algrithmAction=newQActionGroup(this);
algrithmAction->addAction(ui->frameDifAlgAction);
algrithmAction->addAction(ui->multiThrhldFramedifAction);
algrithmAction->addAction(ui->vibeAlgAction);
algrithmAction->setExclusive(true);
QString是在編寫Qt程式時經常用到的資料結構,同時我們經常需要將各種型別的資料轉化成QString然後輸出到介面上。這是實現QString的格式化(如printf)就很有必要。
1.QString 轉換成其他格式
QString轉string:使用QString::toStdString()即可實現。
QString轉數字:使用QString::toInt()/toDouble()/toFloat()/等等
QString轉字串:這個需要稍微麻煩一些
Qstring str;
char* ch;
QByteArray ba = str.toLatin1();
ch=ba.data();
注意:不可以str.toLatin1().data()這樣一步完成,可能出錯,在需要多個字串轉化時就會出錯,如果整個程式只有一次這樣的轉化可以嘗試,安全起見,分步完成。2.arg的使用
QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const
該方法可以實現一定功能的格式化轉換,具體實現如下:
int i = 10; // current file's number
int total = 100; // number of files to process
QString fileName = "fileNameTest"; // current file's name
QString status = QString("Processing file %1 of %2: %3") .arg(i).arg(total).arg(fileName);
該方法是通過佔位符的思想實現的,通過arg的引數替換相應位置的變數
3.sprintf
-
QString & QString::sprintf ( const char * cformat, ... )
這個函式和 C 中的也是差不多的用法,只不過它作為QString的一個成員函式,使用起來就相當方便了,如:
1: #include <QtCore/QCoreApplication>
2: #include <iostream>
3: #include <stdio.h>
4: using namespace std;
5: int main()
6: {
7: QString str2;
8: str2.sprintf("Ggicci is %d years old, and majors in %s.", 20, "Software Eng");
9: cout << str2.toStdString() << endl;
10: return 0;
11: }
輸入結果:
Ggicci is 20 years old, and majors in Software Eng.Press <RETURN> to close this window...