5、qt中lambda表达式与信号配合使用、坐标系统

1、使用例子,传递参数、传值方式

 b4.setParent(this);
    b4.setText("1111111");
    b4.move(200,200);
    int a=10,b = 20;
    connect(&b4,&QPushButton::pressed,
    /* []:没有访问外部变量的权限
     * [=]: 在本类中,外部所有的局部变量、类中的成员以值传递的方式传递进来
     * [this]:类中所有的成员以值传递方式传递进来
     * [&]:已引用得方式引用外部所有局部变量
     * 以上只有只读权限,没有修改权限 需要修改添加关键字mutable
     * ()中可以传递信号的参数
     */
            [=]() mutable 
            {
                qDebug()<<"111111";
                b4.setText("1234");
                qDebug()<<a<<b;
            }
            );

2、坐标系统相对于屏幕

  主窗口相对于屏幕坐标系统:左上角(0,0)坐标,X往右递增,Y往下递增;

    可以使用move()移动主窗口的位置,设置主窗口的大小resize()

  控件相对于主窗口空白区域坐标系统;

    可以使用move()移动控件的位置,设置控件的大小resize()

  子坐标系统,相对于父类的位置,来确定的

3、内存回收机制

  qt内部根据,当前的控件所指向的父类,创建对象树,在释放方的时候,会自动释放所分配的内一层,根据对象树一层一层网上查找;

  C++语法在没有调用到delate()函数的时候,肯定不会调用析构函数;

  那么给子对象分配内存后,可以不需要释放内存;

  这个必须要直接或者间接继承QObject

  指定父对象;

 

posted @ 2020-07-30 11:39  笑不出花的旦旦  阅读(438)  评论(0)    收藏  举报