這裡分析的是qlineedit
1.public types:
這是乙個在這個類中可以供我們使用的公共列舉型別。這也就是說,我們可以如下使用這個公共型別:
// some codepublic types經常使用在properties中。..qlineedit::echomode mode;
mode = mylineedit->echomode();
...mode = qlineedit::noecho;
mylineedit->setechomode( mode );
// or directly mylineedit->setechomode( qlineedit::noecho );
2.properties
properties可以被get和set,上邊的例子就有所體現。
3.public functions
);4.public slots
這個部分描述了我們能連線訊號的一些動作,這些動作構成了與其連線的signal的結果,也就是說,乙個signal發出回導致乙個乙個slot的動作發生。我們也可以自定義訊號槽,比如:
public slots:
void myslot(const qstring&);
然後我們以這樣的方式連線這個槽:connect( lineedit, signal( textedited (const qstring&) ), this, slot( myslot(const qstring&) ) );5.signals
這個部分描述了這個類能發出訊號的部分,這些訊號與特定的slot連線,導致了slot對應動作的發生。也就是說,訊號相當於原因,而slots相當於結果。比如
connect( pushbutton_clear, signal( clicked() ), this, slot( clear() ) );在這裡我們把pushbutton_clear的clicked訊號連線到了this的clear() 槽上,當這個按鍵按下時,this就會執行這個clear的動作。我們也可以自定義訊號:
public:signals:
void customsignal( const qstring& );
..
我們可以如下連線我們自定義的訊號:connect( this, signal( customsignal (const qstring&) ), this, slot( myslot(const qstring&) ) );
6.protected functions
這個就是c++傳統意義上的protected方法。
7.static public members
這個也是指全域性都能使用的類方法,不需要建立例項就可以直接呼叫。
8.const qstring &
這個定義在qt的文件中經常見到。其實這個也可以不加const &,主要是為了performance——在方法中不需要再複製乙份引數,提高了程式效能。const則是說這個傳進來的引數不可修改。
9.在堆上或者棧上分配記憶體
例如,我們使用qprocess這個類,我們寫了如下的函式:
我們以為會呼叫這個exe,但實際上並沒有,終端除錯資訊顯示:
qprocess: destroyed while process is still running.
這是因為變數在程式棧上,當這個變數越出了這個範圍,棧上的這個部分的記憶體就會被釋放。在我們這個例子中,proc在這個程式執行結束前就被銷毀了。解決的方法就是在堆上建立這個變數:當程式設計師使用new進行動態記憶體分配的時候,記憶體是分配在堆(虛擬記憶體,包括板上ram和硬碟剩餘空間所分配的硬碟)上的。
注意使用this的的原因是父程序銷毀後子程序亦銷毀。
如何分析乙個QT類
出處 我們以qlineedit這個類為例來看看如何學習分析乙個qt類。1.public types 這是乙個在這個類中可以供我們使用的公共列舉型別。這也就是說,我們可以如下使用這個公共型別 some code qlineedit echomode mode mode mylineedit echom...
如何分析乙個QT類
出處 我們以qlineedit這個類為例來看看如何學習分析乙個qt類。1.public types 這是乙個在這個類中可以供我們使用的公共列舉型別。這也就是說,我們可以如下使用這個公共型別 some code qlineedit echomode mode mode mylineedit echom...
QT學習 如何分析乙個QT類
出處 我們以qlineedit這個類為例來看看如何學習分析乙個qt類。1.public types 這是乙個在這個類中可以供我們使用的公共列舉型別。這也就是說,我們可以如下使用這個公共型別 some code qlineedit echomode mode mode mylineedit echom...