当前位置: 首页 > news >正文

2023-12-05 Qt学习总结3


点击 <C 语言编程核心突破> 快速C语言入门


Qt学习总结

  • 前言
  • 九 QObject基类
  • 十 QWidget基类
  • 十一 QMainWindow类
  • 总结


前言

要解决问题: 学习qt最核心知识, 多一个都不学.


九 QObject基类

QObject是Qt中最基本的类,所有Qt中的对象都从该基类派生而来。

QObject提供了信号槽机制和属性系统,使得Qt应用程序可以实现高效的事件处理和内置的类型转换。

QObject是一个C++类,同时也是Qt元对象系统的重要概念。

QObject还可以自定义事件和事件过滤器,使得开发者可以轻松地编写和组织复杂的应用程序。

使用QObject作为基类,可以使得派生类成为一个Qt对象,从而能够利用Qt的信号槽机制、事件处理机制和属性系统,为应用程序提供更灵活、更可靠的架构支持。

以下是QObject的常用函数:

  1. QObject::QObject(QObject *parent = nullptr) 构造函数,创建一个QObject对象。

  2. QObject::~QObject() 析构函数,销毁QObject对象。

  3. void QObject::setObjectName(const QString &name) 设置对象的名称。

  4. QString QObject::objectName() const 返回对象的名称。

  5. void QObject::setProperty(const char *name, const QVariant &value) 设置对象的属性。

  6. QVariant QObject::property(const char *name) const 返回对象的属性。

  7. bool QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection) 连接一个信号与槽函数。

  8. bool QObject::disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method) 断开一个信号与槽的连接。

  9. void QObject::deleteLater() 在事件循环中删除对象。

  10. QObjectList QObject::children() const 返回子对象的列表。

  11. bool QObject::event(QEvent *event) 处理事件。

  12. bool QObject::eventFilter(QObject *watched, QEvent *event) 过滤事件。

  13. QThread *QObject::thread() const 返回对象所属的线程。

  14. bool QObject::blockSignals(bool block) 阻止或取消阻止这个对象的所有信号。

  15. bool QObject::signalsBlocked() const 返回是否阻止了这个对象的所有信号。

  16. void QObject::dumpObjectInfo() 输出对象信息。

  17. void QObject::dumpObjectTree() 输出对象树形结构。

十 QWidget基类

QWidget是Qt中所有用户界面类的基类,它提供了一个空白的窗口部件,可以作为其他窗口部件的父类。

QWidget提供了很多基本的函数和信号,包括绘制、布局、尺寸调整、事件处理等。

QWidget还支持嵌套,可以将多个QWidget嵌套在一起形成复杂的界面。

除了QWidget,Qt还提供了一些其他的窗口部件类,例如QMainWindowQDialog等。

这些窗口部件类都是从QWidget派生而来,因此它们都可以使用QWidget提供的函数和信号。

但是这些窗口部件类还提供了一些特殊的功能,例如菜单栏、工具栏、状态栏等,可以方便开发者快速构建各种类型的用户界面。

下面是QWidget基类常用的函数:

  1. QWidget():构造函数,创建一个基本的QWidget对象;

  2. virtual ~QWidget():虚析构函数,释放QWidget对象;

  3. void setWindowTitle(const QString& title):设置窗口标题;

  4. void setWindowIcon(const QIcon& icon):设置窗口图标;

  5. void resize(int w, int h):设置窗口大小;

  6. void setFixedSize(int w, int h):设置窗口固定大小;

  7. void move(int x, int y):移动窗口到给定的位置;

  8. void show():显示窗口;

  9. void hide():隐藏窗口;

  10. void close():关闭窗口;

  11. void setCursor(const QCursor& cursor):设置光标;

  12. QWidget* parentWidget() const:返回父窗口;

  13. void setLayout(QLayout *layout):设置布局管理器;

  14. QLayout* layout() const:返回当前布局管理器;

  15. void setStyleSheet(const QString& styleSheet):设置样式表;

  16. void setWindowFlags(Qt::WindowFlags type):设置窗口标识。

十一 QMainWindow类

QMainWindow是Qt应用程序中最常用的窗口类型之一。

它提供了一个完整的应用程序主窗口的基础, 可以包含菜单栏、工具栏、状态栏和中央窗口部件等。

QMainWindow类继承自QWidget类, 它提供了许多方法和信号来简化应用程序的开发和管理。

可以使用它的方法来管理菜单栏、工具栏和状态栏的内容,以及中央窗口部件的位置和大小等。

QMainWindow类常用函数:

  1. QMainWindow(QWidget * parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) 构造函数。

  2. void setCentralWidget(QWidget * widget) 设置窗口的中间部件。

  3. QMenuBar* menuBar() const 返回窗口的菜单栏部件。

  4. QToolBar* addToolBar(const QString & title) 添加工具栏部件。

  5. QStatusBar *statusBar() const 返回窗口的状态栏部件。

  6. void setStatusBar(QStatusBar * statusbar) 设置窗口的状态栏部件。

  7. void addDockWidget(Qt::DockWidgetArea area, QDockWidget * dockwidget) 添加可停靠的窗口部件。

  8. QWidget* centralWidget() const 返回窗口的中间部件。

  9. QList<QDockWidget *> dockWidgets() 返回窗口中所有的可停靠的窗口部件。

  10. Qt::ToolBarArea toolBarArea(QToolBar * toolbar) const 返回工具栏部件的停靠区域。

  11. void removeDockWidget(QDockWidget * dockwidget) 删除可停靠的窗口部件。

  12. QWidget * takeCentralWidget() 取走窗口的中间部件并将其返回。

  13. void setCorner(Qt::Corner corner, Qt::DockWidgetArea area) 设置可停靠的窗口部件的角落。

  14. void setDockOptions(QMainWindow::DockOptions options) 设置可停靠的窗口部件的选项。


总结

九 QObject基类
十 QWidget基类
十一 QMainWindow类


点击 <C 语言编程核心突破> 快速C语言入门


相关文章:

  • LV.13 D2 开发板启动流程 学习笔记
  • Diffusion Models: A Comprehensive Survey of Methods and Applications
  • mybatis多表映射-对多关联
  • AttributeError: module ‘lib‘ has no attribute ‘X509_V_FLAG_CB_ISSUER_CHECK‘解决方案
  • 4-Docker命令之docker commit
  • 网络存储技术
  • 阿里云 ACR 制品中心 AI/大数据镜像专场上新推荐榜
  • pytorch学习5-最大池化层的使用
  • 美化博客园的个人主页
  • 企业微信小群发公告的接口和功能测试
  • Redis生产实战-Redis集群故障探测以及降级方案设计
  • 【注册测绘师备考——8.宁夏回族自治区测绘管理条例】
  • 为 Compose MultiPlatform 添加 C/C++ 支持(2):在 jvm 平台使用 jni 实现桌面端与 C/C++ 互操作
  • 持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略
  • python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)
  • 【翻译】babel对TC39装饰器草案的实现
  • 07.Android之多媒体问题
  • classpath对获取配置文件的影响
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • HTTP--网络协议分层,http历史(二)
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • uva 10370 Above Average
  • 工作中总结前端开发流程--vue项目
  • 盘点那些不知名却常用的 Git 操作
  • 数组大概知多少
  • 小程序01:wepy框架整合iview webapp UI
  • 一天一个设计模式之JS实现——适配器模式
  • HanLP分词命名实体提取详解
  • ​人工智能书单(数学基础篇)
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (1)(1.9) MSP (version 4.2)
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (4)Elastix图像配准:3D图像
  • (4)logging(日志模块)
  • (55)MOS管专题--->(10)MOS管的封装
  • (ibm)Java 语言的 XPath API
  • (二)WCF的Binding模型
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)jQuery 基础
  • (转载)Google Chrome调试JS
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .htaccess 强制https 单独排除某个目录
  • .htaccess配置重写url引擎
  • .net 7和core版 SignalR
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Framework .NET Core与 .NET 的区别
  • .NET框架设计—常被忽视的C#设计技巧
  • @Service注解让spring找到你的Service bean
  • [1]从概念到实践:电商智能助手在AI Agent技术驱动下的落地实战案例深度剖析(AI Agent技术打造个性化、智能化的用户助手)
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗
  • [Android Pro] AndroidX重构和映射