笔记qtqt笔记
沐飞添加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可以 不填, 填 = , &, 所在函数的变量
1 2 3 4 5 6 7 8 9 10 11
| 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| 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