setWindowTitle()修改窗口标题
setparent() 设置父对象
setFixedSize()设置窗口的固定大小
QObjectList&list=p->children(); list存放p的子对象列表
menubar()创建菜单栏 获取菜单栏 如果当前窗口没有菜单栏那么就会自动创建一个
addmenu()向菜单中添加选项
addtoolbar() 创建工具栏 工具栏可以有多个
statebar()工具栏
QdockWidget()停靠部件 可以有多个
setCentralWidget()添加核心部件 核心部件只可以有一个
textEdiet() 文本编辑框
QLabel() 文本 可以显示图片或者动态图 pixmap属性里设置静态图片
QMovie *movie =new QMovie(“路径”,byte,父指针)
setmovie(参数为Qmovie *) 然后 movie->start(); 播放动态图
emit->函数 发射信号
LineEdit 单行输入框
QT中new的对象有时候不需要delete
QT自动释放机制:1.该对象是QObject的派生类 2.该对象的父类不为NULL
该对象的父类删除时,该对象会被自动删除,无需手动释放。父对象有一个children()列表
信号与槽机制:
信号只需要声明函数即可,无需实现
槽必须同时声明加实现
如果信号函数重载或者槽函数重载 connect应该怎么写:
1.使用函数指针进行赋值
2.使用static_case进行强制类型转换
一个信号可以连接多个槽,当信号发出的时候,槽的调用顺序是随机的,和声明顺序无关
一个槽也可以连接多个信号
connect(信号发送者,信号,信号接受者,槽) 信号发送者和接收者通常是类名 QT5以后
connect(信号发送者,SIGNAL(函数原型),信号接收者,SLOT(函数原型)) QT4之前
这里的SIGNAL()和SLOT()是宏 本质上是将函数原型转换成字符串
connect中使用lambda表达式 使用lambda表达式时就没有信号接收者
如果发送者和接收者是一个类就可以省略接收者
disconnect 取消连接 语法和connect一致 以下三种情况必须用disconnect:
1.断开与某个对象想关联的任何对象 disconnect(myobject,0,0,0)或 myobject->disconnect()
2.断开与某个特定信号的任何关联 disconnect(myobject,SIGNAL(mysignal()),0,0) 或者 myobject->disconnect(SIGNAL(mysignal());
3.断开两个对象之间的关联 disconnect(myobject,0,myreceiver,0)或者 myobject->disconnect(myreceiver)
在 disconnect 函数中 0 可以用作一个通配符,分别表示任何信号、任何接收对象、接收对象中的任何槽函数。但是发射者 sender 不能为 0,其它三个参数的值可以等于 0
qDebug()<<"" 默认将Qstring字符转义输出 解决方法:
1.将Qstring转换为char *
2.使用qDebug().noquote()<<
ListWidget 使用:
QStringList list;
list<<"第一行"<<"第二行"<<"第三行";
ui->listWidget->addItems(list);
treeWidget使用: 通过UI控制更简单
tableWidget使用:
自定义控件:
新建文件 ->QT->QT设计师界面类
然后在ui界面中放置一个父类,将父类提升至自己设置的类里
建立自定义控件关系:
关联一个QSlider和QSpinBox
connect(ui->spinBox,
static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
ui->horizontalSlider,
&QSlider::setValue); //函数二义性的解决
connect(ui->horizontalSlider,
&QSlider::valueChanged,
[=](int value){
ui->spinBox->setValue(value);//使用lambda表达式