时间有些久了,回顾一下大二自学的QT和大三Linux客的一些QT跨平台基础。
- Qwidgets:用户界面对象的基类
-
QWidget的一些子类,提供真的有作用的函数。比如 QLabel、QPushButton、QListWidget、QTabWidget。
-
QWidget继承自QObject,因此也继承了这种对象树关系。一个孩子自动地成为父组件的一个子组件。
-
- QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。
- QDialog 是最普通的顶级窗口。
- .Pro文件的基本配置
- QT += 所属模块 widget 4 版本以上
- TARGET 生成exe程序名称
- TEMPLATE app 应用程序模板
- SOURCE HEADER 源文件 头文件
- .pro就是工程文件(project),它是qmake自动生成的用于生产makefile的配置文件。
- Main函数
- QApplication a 应用程序对象 有且仅有一个
- a.exec() 进行消息循环 阻塞
- MyWidget w 窗口对象
- 默认不会弹出窗口 想要显示窗口 需要调用 show
- QPushButton
- QPushButton * btn = new QPushButton;
- btn->setParent(this) 设置父亲
- btn->setText (“aaa”)
- btn->move( x, y)
- 重置窗口大小 resize(w,h)
- 重置窗口标题 setWindowTitle(“aaaa”)
- 设置固定窗口大小 setFixedSize(w,h)
- 对象树
- 所有new出来的对象 不用管释放
- 原因 children表中的对象会在窗口关闭后进行自动释放
- Qt中的坐标系:以左上方为(0,0)点
- Qt中的信号和槽
- 需求 点击按钮 关闭窗口
- connect( 信号发送者,发送的信号,信号接受者,处理槽函数 )
- Qt可以自定义信号和槽
-
信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。这就类似观察者模式:当发生了感兴趣的事件,某一个操作就会被自动触发。
- 信号和槽的拓展
- 信号是可以连接信号的
- 信号和槽可以断开 disconnect
- 一个信号可以连接多个槽函数
- 多个信号可以连接同一个槽函数
- 信号和槽函数的个数必须一一对应
- 信号的参数个数 可以大于槽函数的参数个数 ,反之不可以
- Lambda表达式:Lambda表达式用于定义并创建匿名的函数对象
- [](){}
- []内部 = 值传递
- ()参数
- {} 函数实现体
- mutable改变值传递的内部变量
- 返回值 []() -> type { };