1.對於每個Qt類,都有一個與該類同名的標頭檔,在這個檔案中包括了對該類的定義。
2.QLabel *label = new QLabel("<h2>Qt!</h2>"); // 能夠使用標籤的,注意delete掉。 app.exec();事件迴圈
3.建立連結:QObject::connect(button, SIGNAL( clicked() ), &app, SLOT( quit() ) ) ; delete label;
void MainWindow::quit()
{
ui->label->setText("iuyioueroiy");
} 訊號】槽】布局】
4.布局管理器。 QHBoxLayout, QVBoxLayout, QGirdLayout
5.對於所有定義了訊號和槽的類,在類定義開始處的Q_OBJECT宏都是必須的。
class FindDialog: public QDialog {
Q_OBJECT
public:
FindDialog( QWidget *parent = 0);
signals: // 聲明訊號,實際上是一個宏
void findNext();
void findPrevious();
private slots: // 聲明槽
void findClicked();
void enableFindButton(const QString &text);
private:
QLabel *label; // 前置聲明,使用指標就無需在標頭檔中包含QLabel的定義,也就不需要包含<QLabel>標頭檔,這樣使編譯更快一點。
xxx;
}
6.label = new QLabel( tr( "xx&jx" ) ); 加上tr()是一個好習慣哦。 &則可以使獲得焦點:alt + j 即可。
7.槽綁定:connect( lineEdit, SIGNAL( textChanged(const QSTring&)), this, SLOT(enableFindButton(const QString &)));
connect(findButton, SIGNAL(clicked()), this, SLOT(findClicked())));
connect(closeButton, SIGNAL(clicked()), this, SLOT(close() );
8.子布局進入父布局中,那麼就會自動重新定義父物件。布局控制項中的控制項則不會吧布局控制項作為自己的父親對象。
9.訊號:可以註冊(自己定義),也可以是內建控制項的那些事件訊號; 槽:自己定義的,用於綁定。
10.Qt會在刪除父物件時,先刪除其子物件。
1.void FindDialog::findClicked()
{
xxxxxxx
emit findPrevioius(text, cs); 發送訊號
}
-------------------------------------------------------------------------------------
1.訊號與槽機制可以把互不瞭解的對象綁定在一起。可以聲明自己的訊號(clicked內建)和槽(setValue內建),還可以發送自己的訊號。
槽與普通c++函數一樣,唯一不同的是:他可以與訊號綁定在一起,每當發射這個訊號的時候,就乎自動調用這個槽。
(所以呢,在什麼情況下我們要定義函數還是槽呢?這就看我們是否它需要在某個訊號的時候自動執行咯)
connect(sender, SIGNAL(signal), receiver, SLOT(slot) );
sender receiver是指向QObject的指標,signal 和 slot是不帶參數的函數名,實際上SIGNAL和SLOT宏會把他們的參數轉換成相應的字串。
一。一個訊號可以連結多個槽子:他們會以不確定的順序來一個一個的調用這些槽
connect( slider, SIGNAL( valueChange(int) ), spinBox, SLOT() );
connect( slider, SIGNAL( valueChange(int) ), this, SLOT());
二。多個訊號可以連結同一個槽
connect( lcd, click, this, abc)
connect(lll, change, this, abc);
三。一個訊號可以與另一訊號連結。
connect( lineEdit, SIGNAL( Change()), this, SLOT(handle....() );
另外,訊號與訊號之間的串連和訊號與槽直接的串連是難以區分的,因為:訊號是函數,槽也是函數。哈哈哈。
四。連結可以被移除
disconnect( lcd, SIGNAL( overflow() ), this, SLOT() );很少用到,因為對象刪除的時候,會自動移除。