Qt学习笔记1

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() );很少用到,因为对象删除的时候,会自动移除。














你可能感兴趣的:(Qt学习笔记1)