Qt入门笔记(一)

1. QMainWindow/QWidget/QDialog的区别
    QMainWindow是带有菜单栏窗口的基类,一般用于PC端;QWidget是Qt所有控件的基类,是普通窗口;QDialog是对话框的基类。它们都是Qt的基类,没有从属关系,只是创建的GUI属性不一样。

2.Qt的基本框架
// QApplication应用程序类
//Qt头文件没有.h,头文件和类名一样
#include <QApplication>

int main(int args,char** argv)
{
    //有且只有一个应用程序类的对象
    QApplication app(args,argv);
    
//下面是coder自定义代码(创建窗口对象并显示等等)
    
    
    //让程序一直执行,等待事件发生
    app.exec();
    return 0;
}

3.Q_OBJECT宏
    当一个类中需要利用信号或槽机制进行通讯时,必须在该类定义中包括该宏。一般是在类所对应的头文件中的类定义里的第一行写上Q_OBJECT即可。

4.指定父对象
    ○1指定和不指定父对象的区别:不指定父对象,则各个窗口是相互独立的;a指定其父对象为b,则a显示在b界面上,还有就是b显示则a自动显示(不需要手动写a.show()).
    ○2指定父对象的方法:1) setParent()  子类对象调用setParent()方法; b. setParent(&a)
2)构造函数传参 子类对象创建时传入父类指针。   &b=new B(&a)

5.信号与槽
    ○1 信号与槽通过connect()函数实现绑定的,其本质是Qt对象之间的信号传递。
    ○2 自定义信号:
        信号必须用关键字signals来声明      signals: void mySignal()
        信号函数的返回值为void,但可以有参数
        信号就是函数声明,只需声明,无需定义
        使用:emit mySignal()
备注:自定义信号最终都会依赖Qt的基础信号,即Qt中的槽函数最开始都是Qt中基础信号触发的。自定义信号的过程:基础信号调用包含发送自定义信号的槽函数,该槽函数出发它包含的信号函数,然后该自定义信号触发它的槽函数。
        connect(&a,A::basicSignal,&b,solt);
        connect(&c,C::signal1,&d,slot1);
basicSignal是基础信号,solt包含自定义的signal1(即其函数体内包含代码:emit signal1())
    ○3 自定义槽:
槽就是普通函数(成员函数,全局函数,静态函数等)
槽函数需要与信号一致,带参数的信号函数会把其参数值传递给槽函数形参(参数和返回值相同)
由于信号返回值为void,所以,槽函数一定没有返回值
备注:Qt4槽函数必须用slots关键字修饰

     ○4 C++11增加新特性:lambda表达式(匿名函数)

                   connect(&obj1,signal,

                                     []()

                                       {

                                               //to do

                                        })

         该方法需要在工程里设置“CONFIG +=C++11”,[]里一般写“=”表示lambda函数体里可以操作外部变量,()里是函数参数,{}里是函数体。

6.Qt的坐标系统
    记住一句话:Qt的坐标原点在左上角,Qt控件的参考系是其父对象。
    另外,Qt的独立窗口(没有父对象的ui)其参考系是显示屏。

7.内存回收机制
    Qt支持内存自动回收(主要指的是堆上分配的对象,不需要用delete进行手动释放)

猜你喜欢

转载自blog.csdn.net/A_Pointer/article/details/82745895
今日推荐