天天看點

【QT學習】如何分析一個QT類

我們以QLineEdit這個類為例來看看如何學習分析一個QT類。

1.Public Types:

這是一個在這個類中可以供我們使用的公共枚舉類型。這也就是說,我們可以如下使用這個公共類型:

Public types經常使用在Properties中。

2.Properties

Properties可以被get和set,上邊的例子就有所展現。

3.Public Functions

這個部分提供了大量這個類執行個體的方法,textEdit-&gt;append( "Path to file: " + <b>lineEdit-&gt;text()</b> );

4.Public Slots

這個部分描述了我們能連接配接信号的一些動作,這些動作構成了與其連接配接的signal的結果,也就是說,一個signal發出回導緻一個一個slot的動作發生。我們也可以自定義信号槽,比如:

<b>myqtapp.h</b>

public slots: 

void mySlot(const QString&amp;);

<b>myqtapp.cpp</b>

5.Signals

這個部分描述了這個類能發出信号的部分,這些信号與特定的slot連接配接,導緻了slot對應動作的發生。也就是說,信号相當于原因,而slots相當于結果。比如

在這裡我們把pushButton_clear的clicked信号連接配接到了this的clear() 槽上,當這個按鍵按下時,this就會執行這個clear的動作。我們也可以自定義信号:

myqtapp.h

myqtapp.cpp - 要使用emit關鍵字

void myQtApp::clear()

{

emit customSignal( textEdit-&gt;toPlainText() );//信号在此發出,帶一個字元串

    textEdit-&gt;clear();

}

我們可以如下連接配接我們自定義的信号:connect( this, SIGNAL( customSignal (const QString&amp;) ), this, SLOT( mySlot(const QString&amp;) ) );

6.Protected functions

這個就是C++傳統意義上的Protected方法。

7.Static Public Members

這個也是指全局都能使用的類方法,不需要建立執行個體就可以直接調用。

8.const QString &amp;

這個定義在QT的文檔中經常見到。其實這個也可以不加const &amp;,主要是為了performance——在方法中不需要再複制一份參數,提高了程式性能。const則是說這個傳進來的參數不可修改。

9.在堆上或者棧上配置設定記憶體

例如,我們使用QProcess這個類,我們寫了如下的函數:

我們以為會調用這個exe,但實際上并沒有,終端調試資訊顯示:

QProcess: Destroyed while process is still running.

這是因為變量在程式棧上,當這個變量越出了這個範圍,棧上的這個部分的記憶體就會被釋放。在我們這個例子中,proc在這個程式執行結束前就被銷毀了。解決的方法就是在堆上建立這個變量:當程式員使用new進行動态記憶體配置設定的時候,記憶體是配置設定在堆(虛拟記憶體,包括闆上RAM和硬碟剩餘空間所配置設定的硬碟)上的。

注意使用this的的原因是父程序銷毀後子程序亦銷毀。

另外一種方法是将proc放入類myQtApp中成為一個類成員。

繼續閱讀