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