QT 基礎功能整理

XML操作

    QFile file("my.xml");//建立指向my.xml文件的QFile對象.
    if(!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) // 只寫方式打開,並清空以前的信息
    	retutn 0;
    	
    QDomDocument doc;  //新建立一個QDomDocument對象,表示一個xml文檔
    QDomProcessingInstruction instrution;  //添加處理指令
    instrution = doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");
    doc.appendChild(instrution);
        QDomElement root = doc.createElement("書庫");
    doc.appendChild(root);  //添加根元素
            QDomElement book = doc.createElement("圖書");
                QDomAttr id = doc.createAttribute("編號");
                id.setValue("1");
            book.setAttributeNode(id);  //圖書可以有自己的屬性
                QDomElement title = doc.createElement("書名");
                    QDomText text = doc.createTextNode("Qt");
                title.appendChild(text);
            book.appendChild(title);
                QDomElement author = doc.createElement("作者");
                             text = doc.createTextNode("shiming");//文本節點
                author.appendChild(text);  //QT&shuiming是用來描述書名和作者的,因此是孩子
            book.appendChild(author); //書名&作者是圖書的孩子,他們是用來描述圖書的
        root.appendChild(book);
            //添加第2個節點
            book = doc.createElement("圖書");
                id = doc.createAttribute("編號");
                id.setValue("2");
            book.setAttributeNode(id);  //圖書可以有自己的屬性
                title = doc.createElement("書名");
                    text = doc.createTextNode("linux");
                title.appendChild(text);
            book.appendChild(title);
                author = doc.createElement("作者");
                     text = doc.createTextNode("yafei");//文本節點
                author.appendChild(text);  //QT&shuiming是用來描述書名和作者的,因此是孩子
            book.appendChild(author); //書名&作者是圖書的孩子,他們是用來描述圖書的
        root.appendChild(book);

    QTextStream out(&file);
    doc.save(out, 4);  //將文檔保存到文件,4爲子元素縮進字符數
    file.close();

在這裏插入圖片描述

QPlainTextEdit

QTextDocument *document=Q_NULLPTR;
    QTextBlock textBlock;
    document=ui->plainTextEdit->document();
    for(textBlock=document->begin();textBlock!=document->end();textBlock=textBlock.next()){
        qDebug()<<textBlock.text();

QVector

添加元素:      
    QVector<QString> strArray;         
    strArray.append("Hello"); //可以這樣       
    strArray<<"World!"; //也可以這樣        
    strArray<<"MyName"<<"is"<<"LEO";//也可以這樣加上個元素        
    //現在strArray總共有5個字符串元素,strArray.count()==5     
遍歷:
    QVector<QString>::iterator iter;  
    for (iter=strArray.begin();iter!=strArray.end();iter++)  
    {  
        qDebug() <<  *iter << "\0"}  
插入:
    strArray.insert(1,"這就是在hello和world之間添加");
刪除:
    strArray.remove(1); //刪除第一個元素,從0開始
    strArray.remove(13); //從1開始,刪除3個元素
複製(取代):
    strArray.replace(1,"LEO"); //刪除第一個元素,從0開始
上述,除了append()replace()這兩個函數外,其它函數會比較慢,因爲在內存中移動一個位置時,這些函數會使向量容器內的對象要移動許多次!如果你想要一個能夠在中部快速插入和刪除的容器時,可以使用QList或者QLinkedList。
at()函數來讀取對象會比使用operator[]()讀取速度更快,因爲這不會使用深度複製(deep copy)。
data()函數也可以訪問保存在QVector的數據。這個函數會返回指向向量容器的第一個對象的指針。這樣,你就可以使用指針來訪問和修改向量容器內的對象。你可以使用指針將一個QVector向量容器傳遞給接收普通C++數組的函數。
contains()函數是用來查找向量容器內是否含有某個對象。
count()函數可以找出某個對象出現的次數。
resize()函數可以在任何時候改變QVector向量容器的體積。如果新的向量容器體積比以前的要大,QVector也許需要重新分配整個向量容器。QVector會預先分配兩倍於實際數據的大小空間,從而減少再分配的次數。
reserve()函數,如果你事先知道向量容器大概包含多少個對象,你可以調用這個函數來預先分配一定的內存大小空間。
capacity()函數會告訴你向量容器所佔內存的實際大小空間。

QT中QString與string的轉化,解決中文亂碼問題

QString str2qstr(const string str) 
{ 
    return QString::fromLocal8Bit(str.data()); 
} 
   
string qstr2str(const QString qstr) 
{ 
    QByteArray cdata = qstr.toLocal8Bit(); 
    return string(cdata); 
} 

QString中去除空格的方法

  1. 去除字符串前面空格 使用正則表達式:
    QSring.remove(QRegExp("^ +\s*"));
    實例:
    QString str = " aa “;//字符串aa前後各三個空格
    str.remove(QRegExp(”^ +\s*"));
    //運行結果: str="aa ";

  2. 去除字符串後面空格
    使用正則表達式:
    QSring.remove(QRegExp("\s* +$"));
    實例:

QString str = " aa “;//字符串aa前後各三個空格
str.remove(QRegExp(”\s* +$"));
//運行結果: str=" aa";

3.去除字符串中首尾空格
(1)QString QString::simplified() const
返回一個字符串,移除從一開始到結尾的空白,每個序列內部的空格替換爲一個空格(頭尾的都去掉了)
實例

QString str = " aaa\t 44\ngood\r\n ";
str = str.simplified();
//結果: str == “aaa 44 good”;

‘\t’, ‘\n’, ‘\v’, ‘\f’, ‘\r’, ’ ’ 都屬於空白的處理範圍。

(2)QString QString::trimmed() const
返回一個字符串,移除從一開始到結尾的空白。也去掉頭尾的空白
實例

QString str = " aaa\t 44\ngood\r\n ";
str = str.trimmed();
//結果:str == “aaa\t 44\ngood”;

3.刪除所有空格
使用正則表達式:
QSring.remove(QRegExp("\s"));
實例

QString str = " a c d a “;//字符串aa前後各三個空格
str.remove(QRegExp(”\s"));
//運行結果: str=“acda”;
————————————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章