窗口相对坐标:
x轴向右递增
y轴向下递增
子窗口坐标系是基于父窗口的
创建一个按钮:
#include <QPushButton>
QPushButton* btn=new QPushbutton(this)
btn.move(10,10)
btn.setFixedSized(200,200)
QPushButton* btn1=new QPushbutton(btn)#内嵌到btn中
btn1.move(10,10)
btn1.setFixedSized(100,100)
内存的回收
析构顺序:先析构子节点窗口,再释放父节点。
指定父对象的两种方式:
1、通过构造函数时直接指定
2、xx.setparent(QWidget *parent/QObject *parent)
debug输出调试信息
#include <QDebug>
aDebug()<<"输出信息“;
作用和C++中的cout<<类似
自定义信号与槽的使用
在对象的基础上实现的。直接新建c++class类,选中object
必须从QObject类或其子类中派生
引入Q_OBJTCT宏否则没有信号与槽的功能
自定义信号:
信号是类的成员函数
返回值是void类型
信号需要使用signals关键字进行声明,使用方法类似public等关键字
信号的调用:在信号函数前加关键字emit(加不加都可)
class Test:public QObject
{
Q_OBJECT
signals:
void testsignal()
#参数的作用是参数传递,谁调用信号函数就指定实参,实参最终会传递给槽函数。
void testsignal(int a )
}
自定义槽函数
其写法和普通函数的写法一样
返回值为void
槽函数需要制定多少参数需要看连接的信号参数的个数,槽函数参数的个数可以小于信号传递的参数(部分参数被忽略)支持重载,
虽然信号只是函数的声明,不涉及函数的定义,而函数中的参数的作用为:相当于槽函数的输入信号。可以理解为当某个动作执行时,有些输入变量是在事件触发的那一时刻产生的,为了将该时刻的信号传入槽函数,就诞生了信号的形参。
信号函数:
void testsig(int a,double b,float c)
槽函数:
void testslot(int a,double b)
拓展:
一个信号可以连接多个槽函数,发送一个信号多个动作执行
需要写多个connect函数
执行顺序是随机的
一个槽函数可以连接多个信号,处理动作是相同的
信号可以连接信号,信号的接受者可以继续发送信号而不一定要执行动作
信号槽是可以断开的
disconnect()