Qt基本知识

QT基本知识:


QT基本模块:

(1)桌面开发使用模块:QT Widgets、QT Core、QT GUI、QT TEST、QT SQl

(2) 移动端使用模块:QTQuick、QT QML、QT MulitMedia Widgets、QT QuickControls、QT QuickDialog

(3)网络:QTNetwork

(4)多媒体:QT MulitMedia


QT命名规范:







QT中绝大部分类都是继承Qobject ,Qobject是一个顶层类。

QT 按钮小程序:

(1)父子关系

默认情况下,按钮没有认干爹的情况下,是一个顶层窗口,想要按钮显示在窗口上,就要跟窗口建立父子关系。

方法一:setParent函数。

方法二:构造函数传参。

(2)QT坐标系

以父窗口的左上角为原点(0,0);以向右为X轴的正方向;以向下为y轴正方向;

顶层窗口以屏幕左上角为原点。

(3)QT常用API



 (4)对象树


概念:各个窗口对象通过建立父子关系构造一个关系树

内存管理:父对象释放时会自动释放各个子对象(使用childern列表)

以后基本都是用new的方式来创建窗口对象,注意点:

1.父对象能被释放

2.父对象、子对象直接或者间接继承自Qobject


(5)信号和槽机制

信号:各种事件

槽:响应信号的动作

当某个事件发生后,如某个按钮被点击了一下,它就会发出一个被点击的信号 (signal)。

某个对象接收到这个信号之后,就会做一些相关的处理动作(称为槽slot)。但是Qt对象不会无故收到某个信号,要想让一个对象收到另一个对象发出的信号,这时候需要建立连接(connect) .

//信号发送者         //信号       //信号接收者        //槽:信号处理动作

默认情况下,他们四者没有关系,通过connect建立四者关系

connect(信号发送者,信号,信号接收者,槽)


(6)标准信号和槽

信号和槽本质都是函数      connect 里四个参数都是指针

使用connect保留&符号:

1.提高代码可读性

2.自动提示



(7)自定义信号和槽(信号和槽就是函数)

自定义信号(函数)

1.函数生命在类头文件的signals域下面

2.void类型函数,没有返回值

3.可以有参数,也可以重载

4.只有声明,没有实现定义

5.触发信号关键字:      emit obj->sign(参数...)


自定义槽(函数)

1.函数生命在类头文件的public\private\protected slots域下面(qt4以前的版本)

        qt5 就可以声明在类的任何位置,还可以是静态成员函数、全局函数、lambda 表达式

2.void类型函数,没有返回值

3.可以有参数,也可以重载

4.不仅声明,还要实现定义



例:场景:下课了,老师说饿了,学生请吃饭

         信号发送者:老师

          信号:老师饿了

          信号接收者:学生

           槽:请吃饭

创多少个类:teacher 、student

信号:hungry 

槽:treat



带参数的自定义信号和槽:在声明函数的时候就带上参数就行

例:老师说饿了,要吃黄焖鸡,学生请吃黄焖鸡


参数二义性问题:(重载)

 1.使用函数指针赋值,让编译器挑选符合类型的函数 

 2.使用static_cast 强制转换,让编译器挑选符合类型的函数

调用带参数的信号函数:    emit pTeacher->hungry("AAAA");



信号和槽的拓展

1.一个信号可以连接多个槽,一个信号建立了多个connect,那么当信号发射的时候,槽函数的调用顺序:随机

2.一个槽可以连接多个信号

3.信号可以连接信号

connect(第一个信号发送者,第一个信号,第二个信号发送者,第二个信号);

4.信号可以断开连接

connect参数怎么填,disconnect就怎么填

5.信号和槽的参数关系,必须同时满足以下条件:

1)、信号和槽函数的参数类型必须对应

2)、信号和槽函数的参数个数不需要一致,但信号函数参数个数>=槽函数参数个数

例:hungry(QString)     ->  treat()                ok

        hungry(QString)    ->  treat(int)             会编译出错

          hungry(QString,int)    ->  treat(int)   会编译出错


QT4的信号和槽

使用两个宏 Signal Slot

connect使用不一样,信号和槽函数声明差不多

形式:connect(信号发送者,SIgnal(函数原型),信号接收者,Slot(函数原型))


Signal Slot宏的原理,就是将后边的参数转成字符串  

优点:无二义性

缺点:写错不报错




QDebug

qDebug输出QString默认会转义输出:解决方法:

    1.将QString 转成 char *

    // qDebug()<<"Student teart teacher"<<what.toUtf8().data();

    2.使用qDebug().noquote()

  // qDebug().noquote()<<"Student teart teacher"<<what;




7/20

Lambda表达式:用于定义匿名的函数对象

lambda表达式基本构成

[capture] 捕获外部局部变量的列表,值传递,直接填变量名,引用传递就使用&变量名

1.  捕获局部变量的两种方式,一种值传递,一种引用:

    = 将局部变量全部使用值传递捕获,捕获局部变量包括this

    & 局部变量全部使用引用传递捕获进来

    [&,b]只有b是值传递  /  [=,&b]只有b是引用传递

2.   默认情况下值传递捕获进来的局部变量就是const,需要修改的话使用mutable选项

返回值类型可省略,编译器自动计算返回值

3.无特殊情况下,建议使用[=](){}

格式:(1)
//调用lambda的方式,使用函数指针

//    void (*p)()=[]()

//    {

//      qDebug()<<"hello lambda";

//    };

//    p();

 格式:(2)与上面含义等价

    []()

    {

      qDebug()<<"hello lambda";

    }();


 






















最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355