qt笔记

QPushButton

添加QPushButton.h
创建一个对象 QPushButton *btn = new QPushButton
设置窗口大小:不固定resize()
:固定 setFixedSize();
设置窗口标题:setWindowTitle()
移动窗口 btn->move();
设置内容: setText();
设置父类,包含:setParent();

connnet(信号发送者,发送的信号(地址),信号的接收者(this),处理的槽函数(地址))

自定义信号和槽
创建两个类
一个信号类(要写在singal下 要声明不用实现),一个接收类(写在public或slot下 要声明要实现)
用指针建立对象
connect 调用

用emit 函数触发 meit zt->func();

connect 可以信号连接信号

自定义信号带参数的要用函数指针
void (Person:: *p)(QString) = &Person::hungary;

disconnect 断开连接

信号参数可以多余槽 类型要匹配
参数一对一的时候类型要一样

qt4之前connect的写法 —-不推荐
connect(zt,SINGAL(hungary()),st,SOLT(treat));
优点:直观 缺点:类型不做检测:槽的参数多余信号的参数不会报错

Lambda匿名函数 5.4之前 CONFIG +=c++11;
v{
btn->setText();

}();后面那个括号不加是声明,加上是函数
v可以 不填, 填 = , &, 所在函数的变量

QPushButton *mybtn  = new QPushButton(this);
QPushButton *mybtn2 = new QPushButton(this);
mybtn2->move (100,100);
int m=10;
connect (mybtn,&QPushButton::clicked,this,[m]()mutable{m=100+10;qDebug()<<m;});
connect (mybtn2,&QPushButton::clicked,this,[=](){qDebug()<<m;});

mutable 可以改变拷贝的值,但不改变本身

int ret = []()->int{return 1000;}();
用->int 告诉编译器所返回的类型

QMainWindow

//创建菜单栏  最多一个
   QMenuBar *bar=menuBar();
   //将菜单栏放入窗口中
   setMenuBar(bar);
  //创建菜单
   QMenu *fileMenu = bar->addMenu("文件");
   QMenu *editMenu = bar->addMenu("编辑");

   //创建菜单项   可以和工具栏的共用
   QAction *newAction =fileMenu->addAction("新建");
   //添加分隔符
   fileMenu->addSeparator();

QAction *openAction= fileMenu->addAction("打开");
//设置工具栏初始位置
addToolBar(Qt::LeftToolBarArea,toolBar);
//允许的位置
toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
//是否浮动
   toolBar->setFloatable(false);
//是否可以移动
   toolBar->setMovable(true);

//往工具栏中添加文本 与菜单栏的可以共用
toolBar->addAction(newAction);
//也可以添加分割线
   toolBar->addSeparator();
   toolBar->addAction(openAction);

//往工具栏里添加按钮
QPushButton *btn = new QPushButton("add",this);
   toolBar->addWidget(btn);

#QT