1、主函数框架:
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//待执行代码段
return a.exec();
}
2、关键字:
emit :触发信号函数(广播式发送信号)
3、函数指针:
void fun()
{
}
void(*p)()=fun;
4、信号没有返回值,可以有参数;信号就是函数的声明,只需声明,无需定义;信号可重载。
5、具体语句语法分析
a、信号与槽:QT对象之间通信的接口
connect(&b1,&QPushButton::pressed, this, &MainWidget::close);
/* &b1:信号发出者,指针类型
* &QPushButton::pressed:处理的信号, &发送者的类名::信号名字
* this:信号接收者
* &MainWidget::close:槽函数,信号处理函数, &接收的类名::槽函数名字
*/
b、输出中文时配置
//str.toUtf8() -> 字节数组QByteArray
//...data() ->QByteArray ->char*
qDebug() << a << str.toUtf8().data();
输出为:
用 qDebug() << a << str;直接输出时:
输出的中文字符带双引号。
6、Qt4信号连接(用宏)
Qt4槽函数必须有slots关键字修饰
connect(&w,SIGNAL(mysignal()),this,SLOT(dealSub()));
connect(&w,SIGNAL(mysignal(int , QString)),this,SLOT(dealSlot(int , QString)));
//SIGNAL,SLOT将函数名字->字符串 不进行错误检查
7、Lambda表达式(添加 项目文件:CONFIG +=C++11)
QPushButton *b4=new QPushButton(this);
b4->setText("Lambda表达式");
b4->move(150,150);
connect(b4,&QPushButton::released,
[]()
{
qDebug() <<"111";
}
);
[]:将外部参数传入;(传入时默认只读)
放入=时,表示将外部所有局部变量、类中所有成员以值传递方式传入(常用)
this:类中所有成员以值传递方式传入
&:把外部所有局部变量、引用符号传入
8、坐标系统
a、对于父窗口(主窗口),坐标系统相对于屏幕;
原点:相对于屏幕左上角;
x:往右递增;y:往下递增。
b、对于子窗口,坐标系统相对于父窗口;
原点:相对于窗口空白区域左上角;
x:往右递增; y:往下递增。