设为首页 加入收藏

TOP

C++系列三:QT初识2(一)
2023-09-09 10:25:34 】 浏览:171
Tags:初识

前言:

我可没说放弃

Base class中的三个选项:
QMainWindow:主窗口类,包括菜单栏、工具栏、状态栏。
QWidget:可以创建一个空白的窗口,是所有界面组件的基类。
QDialog:对话框类。

Clang代码模型:
help->About Plugins…->C++->ClangCodeModel去掉勾选,再重启
会对源码进行分析,提供函数提示、代码补全等功能
会出现大量警告和错误提示
可以在Help->About Plugins中取消了该项(ClangCodeModel)

qmake是构建项目的软件,它根据.pro文件生成Makefile文件,然后C++编译器可以根据Makefile文件进行编译和链接
qmake还会自动生成MOC(meta-object compiler)和UIC(user interface compiler)生成构建规则
$$为替换函数的前缀

//Qt框架中的模块分为两大类:
-Qt 基本模块(Qt Essentials):提供了 Qt 在所有平台上的基本功能。
-Qt 附加模块(Qt Add-Ons):实现一些特定功能的模块。
基本模块:
Qt Core           //Qt框架的核心,定义了元对象系统
Qt GUI           //设计 GUI 界面的基础类,包括事件处理、文字处理等
Qt Widgets       //提供用于创建GUI的各种界面组件类
Qt D-Bus         //D-Bus是实现进程间通信(inter process communication,IPC)和远程过程调用(remote procedure call,RPC)的一种通信协议
Qt Test          //提供一些对应用程序和库进行单元测试的类
Qt QML           //提供用QML编程的框架,定义了QML和基础引擎
Qt Quick         //用于开发QML应用程序的标准库,提供创建UI的一些基本类型
Qt Quick Controls//提供一套基于Qt Quick的控件,可用于创建复杂的UI
Qt Quick Dialogs //提供通过QML使用系统对话框的功能
Qt Quick Layouts //提供用于管理界面布局的QML类型
Qt Quick Test    //提供QML应用程序的单元测试框架
其他模块:
自行添加。

//Qt的元对象系统
1. 元对象(meta object):每个QObject及其子类的实例都有一个元对象(静态变量staticMetaObject)。函数metaObject()可以返回它的指针。
2. 类型信息:QObject的inherits()函数可以判断继承关系。
3. 动态翻译:函数tr()返回一个字符串的翻译版本。
4. 对象树:表示对象间从属关系的树状结构。QObject提供了parent()、children()、findChildren()等函数。对象树中的某个对象被删除时,它的子对象也将被删除。
5. 信号和槽:对象间的通信机制。
6. 属性系统:可以使用宏Q_PROPERTY定义属性,QObject的setProperty()会设置属性的值或定义动态属性;property函数会返回属性的值。


//信号和槽:
最后一个参数:Qt::ConnectionType表示了信号与槽槽之间的关联方式
Qt::AutoConnection(缺省值):自动确定关联方式。
Qt::DirectConnection:信号被发射时,槽立即执行,槽函数与信号在同一线程
Qt::QueuedConnection:事件循环回到接收者线程后执行槽,槽与信号在不同线程
Qt::BlockingQueueConnection:与Qt::QueuedConnection相似,信号线程会被阻塞直到槽执行完毕。当槽函数与信号在同一线程,会造成死锁。
//disconnect()函数的使用
1. 解除与一个sender所有signal的连接:
disconnect(myObject,nullptr,nullptr,nullptr);//静态函数
myObject->disconnect();      
2. 解除与一个特定信号的所有连接:
disconnect(myObject, SIGNAL(mySignal()), nullptr, nullptr); 
myObject->disconnect(SIGNAL(mySignal()));
3. 解除与一个特定receiver的所有连接:
 disconnect(myObject, nullptr, myReceiver, nullptr);
4. 解除一对特定的信号和槽的连接:
 myObject->disconnect(myReceiver);
disconnect(lineEdit, &QLineEdit::textChanged,label, &QLabel::setText);
//(sender)函数     
在槽函数里,使用QObject::sender()可以获取信号发射者的指针
QSpinBox * spinbox = qobject_cast<QSpinBox *>(sender());


//QVariant
各种属性的数据类型不同,需要使用QVariant类表示可以存储任何类型的数据。
QVariant var(173); 
QString str=var.toString();     //str="173"
int val=var.value<int>();       //val=173

QStringList strList;
strList<<"one"<<"two"<<"three";
var.setValue(strList);                  //给var赋值一个字符串列表
QStringList value=var.toStringList();   //转换为字符串列表

QFont font=this->font();        //窗口的字体
QVariant var=font;              //赋值给一个QVariant变量
QFont font2=var.value<QFont>(); //转换为QFont类型

//QRandomGenerator
QRandomGenerator *rand1=new QRandomGenerator(QDataTime::currentMSecsSinceEpoch());
QRandomGenerator *rand2=new QRandomGenerator(QDataTime::currentMSecsSinceEpoch());
for(int i=0;i<5;i++
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇1.15 自实现GetProcAddress 下一篇《C++并发编程实战》读书笔记(1)..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目