Qt學習筆記1

來源:互聯網
上載者:User

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() );很少用到,因為對象刪除的時候,會自動移除。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.