
qt-C++语法笔记
文章平均质量分 66
QT
一只野生的善逸
吃饭,睡觉,学习,一个单身喜欢滑板和动漫的程序员
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
qt-C++笔记之布局管理`space` 和 `margin`的区别
code review!注意:如果需要单独控制某些控件的间距,可以使用 或 方法插入固定间距或弹性空间。示例:2.Margin(边距)定义: 指的是布局与容器边界(或父控件边界)之间的距离。它控制布局内容的整体外边距。适用场景:用于设置布局内容与容器边缘的间隙,常用于美化界面或避免控件过于贴近窗口边界。设置方法:在 Qt 5 中,使用 设置布局的左、上、右、下边距。在 Qt 6 中, 仍然是主要方法,但 Qt 6 更强调现代化的布局管理。示例:统一设置边距:原创 2025-07-09 23:35:16 · 930 阅读 · 0 评论 -
qt-C++笔记之setCentralWidget的使用
中央控件是主窗口中占据主要区域的控件,通常用于显示应用程序的核心内容,例如编辑器、浏览器、图像显示区域等。如果你需要更复杂的界面,可以将一个带有布局的。类的一个成员函数,用于设置主窗口的。以下是一个简单的示例,展示如何使用。在 Qt 的 C++ 开发中,在这个例子中,中央控件是一个。原创 2025-07-08 23:55:09 · 797 阅读 · 0 评论 -
qt-C++语法笔记之Stretch与Spacer的关系分析
Stretch是代码中控制布局比例的工具,适合动态、精确的布局管理。是 Qt Designer 中的可视化工具,适合快速设计和直观调整。两者在功能上可以互换(通过或sizePolicy实现),但使用场景不同:代码中用stretch,设计器中用 spacer。结合使用可以提高开发效率和布局灵活性。原创 2025-07-08 23:13:42 · 913 阅读 · 0 评论 -
qt-C++笔记之QSplitter
头文件继承自QFrame(因此也间接继承自QWidget功能将窗口分割成多个子区域,每个区域可以包含一个QWidget(如QTextEditQTreeView等)用户可以通过拖动分割条调整子控件的大小支持水平(Horizontal)或垂直(Vertical)分割。原创 2025-07-07 22:37:53 · 1245 阅读 · 0 评论 -
qt-C++笔记之ubuntu22.04源码安装Qt6.8.2
Ubuntu 18.04 上安装 glibc 2.28 支持 QT6:https://xujinzh.github.io/2024/01/05/ubuntu-18-04-install-glibc2-28/index.html。安装参考链接:https://www.ics.com/blog/how-build-qt-640-source-ubuntu-linux。完成以上步骤后,Qt Creator 就已关联了新安装的 Qt6 环境,可以正常编译和调试基于 Qt6 开发的应用程序。在打开的对话框中点击。原创 2025-03-04 23:53:42 · 1098 阅读 · 0 评论 -
qt-C++笔记之Linux下Qt环境变量设置及与QtCreator的关系
如果没有将 Qt 的工具路径(如 /home/username/Qt/6.7.3/gcc_64/bin)添加到 PATH 中,终端将无法直接找到 Qt 工具(如 qmake、lupdate),除非它们安装在默认的系统路径中(通常不会发生)。如果没有设置 Qt 的库路径(如 /home/username/Qt/6.7.3/gcc_64/lib),运行依赖 Qt 的程序时,系统会在默认路径中查找库文件。/home/username/Qt/6.7.3/gcc_64/qml 是 QML 模块所在的目录。原创 2025-03-01 21:25:17 · 1459 阅读 · 0 评论 -
qt-C++笔记之QtCreator新建项目即Create Project所提供模板的逐个尝试
code review!环境:ubuntu22.04 Qt6 6.7.3原创 2025-02-27 00:12:57 · 545 阅读 · 0 评论 -
qt-C++笔记之创建和初始化 `QGraphicsScene` 和 `QGraphicsView` 并关联视图和场景的方法
方式场景分配视图分配内存管理适用场景1. 栈分配场景和视图栈栈自动管理简单、短生命周期的场景2. 堆分配场景和视图堆堆手动管理长期存在、复杂的场景3. 堆分配场景 + 栈分配视图堆栈部分手动管理临时视图,长期存在的场景4. 堆分配并利用父子关系管理堆堆父子关系自动管理复杂项目,长期存在的视图和场景5. 使用 Qt Designer 通过 UI 文件创建可选(堆)可选(堆)父子关系自动管理使用 Qt Designer 的项目。原创 2025-02-21 23:03:58 · 1303 阅读 · 0 评论 -
qt-C++笔记之QGraphicsScene和 QGraphicsView中setScene、通过scene得到view、通过view得scene
1.2.3.在 Qt 的图形视图框架中,scene()->add…开头的方法用于在场景中动态添加图形项或其他内容,而 scene()->removeItem 用于从场景中移除指定的图形项。在 QGraphicsItem 的 mousePressEvent(QMouseEvent *event) 方法中,可以通过 scene() 获取当前图形项所属的场景,使用这些方法来操作场景中的内容。原创 2025-02-16 00:02:59 · 1197 阅读 · 0 评论 -
qt-C++笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别
类名定义特点使用场景QLine表示由两点定义的直线段- 轻量级- 整数精度- 几何计算- 基本绘制描述复杂绘图路径的类- 灵活构建任意复杂路径- 浮点精度- 支持布尔运算- 复杂形状绘制- 路径动画在 QGraphicsScene 中显示 QPainterPath 的图形项- 可视化复杂路径- 支持交互和变换- 图形编辑器- 数据可视化自定义 QGraphicsPathItem继承 QGraphicsPathItem,实现自定义行为- 可扩展性强。原创 2025-01-25 15:09:12 · 1296 阅读 · 0 评论 -
qt-C++笔记之自定义继承类初始化时涉及到parents的初始化
在继承类中,通常需要在构造函数中通过调用父类的构造函数来初始化parent。合理设置parent可以让 Qt 对象树自动管理对象的生命周期。如果不使用parent,需要手动管理对象的生命周期。动态设置parent或结合智能指针管理对象是可行的,但需要小心避免冲突。在声明与实现分离时,parent的初始化通过构造函数的初始化列表实现。在头文件中声明构造函数时,可以为parent提供默认值nullptr。在源文件中通过调用父类构造函数进行初始化。原创 2025-01-11 19:56:25 · 1237 阅读 · 0 评论 -
qt-C++笔记之动画框架(Qt Animation Framework)入门
用于对对象属性(如位置、大小、透明度等)进行动画处理,直接操作QObject的特定属性。如果需要更复杂的动画效果,可以自定义动画逻辑或插值方式。Qt 提供了多种内置的动画曲线,比如线性、弹跳、缓动等。如果默认曲线无法满足需求,还可以使用自定义动画曲线。// 这里使用简单的二次函数曲线 y = t^2});Qt 提供了非常强大的动画框架,适用于各种场景,包括简单的 UI 动画、复杂的场景动画,以及自定义动画效果。建议先从入门,熟悉后再学习与的组合用法,以及在场景中使用。原创 2025-01-05 21:52:50 · 1551 阅读 · 0 评论 -
qt-C++笔记之自定义类继承自 `QObject` 与 `QWidget` 及开发方式详解
Qt 提供了多种开发方式,以满足不同项目的需求和开发者的偏好。本节将介绍三种主要的开发方式,并通过示例展示其整体结构。特点在 Qt Designer 中拖拽预设控件(通常是占位符,如QWidget),然后通过 “Promote to” 功能将其替换为自定义的子类。允许在可视化设计中集成自定义的 UI 组件。优点结合了可视化设计的便捷性和自定义组件的灵活性。使得复杂或定制化的 UI 组件能够在 Designer 中被复用和管理。缺点需要确保自定义类正确继承自QWidget或其子类。原创 2024-12-15 19:36:28 · 2079 阅读 · 0 评论 -
qt-C++笔记之父类窗口、父类控件、对象树的关系
/ 'this' 是 MyWidget 的实例在MyWidget的构造函数中创建一个,并将this作为父对象,使按钮成为MyWidget的子控件。原创 2024-12-15 19:32:28 · 1306 阅读 · 0 评论 -
qt-C++笔记之继承自 QWidget和继承自QObject 并通过 getWidget() 显示窗口或控件时的区别和原理
继承自QWidget:用于直接实现可视化控件或窗口,简单直接。继承自QObject并使用:用于逻辑与界面分离的场景,常见于复杂系统或需要灵活扩展的应用程序。原创 2024-12-15 19:31:06 · 1181 阅读 · 0 评论 -
qt-C++语法笔记之mapToGlobal将组件(控件)中的本地坐标系(局部坐标)映射到全局坐标系
方法功能说明局部坐标 → 全局坐标全局坐标 → 局部坐标局部坐标 → 父控件坐标父控件坐标 → 局部坐标是 GUI 编程中处理坐标转换的重要工具,能够帮助开发者将局部坐标映射到全局坐标,从而实现精确的界面定位和交互功能。了解它的工作机制以及与其他坐标转换方法的区别,是高效开发 GUI 程序的基础。原创 2024-12-09 23:11:06 · 1084 阅读 · 0 评论 -
qt-C++笔记之Q_DECLARE_METATYPE和qRegisterMetaType
code review! 是一个 Qt 宏,用于注册某种类型以便在 Qt 的元对象系统中使用。注册后的类型可以在 Qt 的信号和槽机制中使用,特别是当类型作为信号参数传递时。这对于非Qt内建类型来说尤其重要,因为 Qt 的元对象系统需要额外的信息来处理这些类型。声明自定义类型:首先需要创建一个自定义类型。例如:使用 :在全局命名空间中使用这个宏来声明自定义类型:注册类型:为了使 QVariant 能够处理这个自定义类型,还需要在程序的某个地方注册它:应用场景信号和槽: 如果想在信号和槽原创 2024-09-22 19:23:06 · 1453 阅读 · 0 评论 -
qt-C++笔记之作用等同的宏和关键字
的引入主要是为了提高代码的可读性和一致性,避免关键字冲,特别是在那些。可能与其他语义冲突的环境中(如某些编译器或代码分析工具可能不识别。被推荐使用,尽管在实际的 Qt 源代码中。是 Qt 中用于发射信号的宏,其作用等同于。为什么使用 Q_EMIT 而不是 emit?在 Qt 的官方文档和推荐的编码风格中,原创 2024-09-22 19:15:14 · 776 阅读 · 0 评论 -
qt-C++笔记之使用qDebug().noquote()优美地格式化打印json
在Qt中,可以使用和来处理和格式化JSON数据。为了优美地格式化打印JSON数据,可以使用方法,并将其结果传递给进行输出。原创 2024-07-22 01:08:04 · 1078 阅读 · 0 评论 -
qt-C++笔记之命令行生成项目pro文件(极简编译qt项目代码)
通过上述步骤,成功地创建了一个简单的 Qt 控制台应用程序,并编译运行了它。这个过程展示了如何使用qmake和make来构建一个 Qt 项目。原创 2024-06-11 19:40:20 · 1842 阅读 · 0 评论 -
qt-C++笔记之QThread使用
直接使用QThread和 Lambda:适合快速、一次性的简单后台任务。使用:简化版的线程创建和任务绑定,适合不需要复用线程的场景。继承QThread:适用于需要完全控制线程行为的复杂场景。使用QObject派生类与QThread:Qt推荐的方式,适合需要线程间频繁通信的场景。使用:适用于简单并发任务,自动线程池管理,减少资源消耗。添加parent参数的版本提供了更灵活的内存管理选项,允许线程对象以树形层次结构中的一部分被管理,这对于复杂的Qt应用程序来说非常有用。没有parent。原创 2024-05-26 15:55:54 · 1264 阅读 · 0 评论 -
qt-C++笔记之QProcess声明在堆上和声明在栈上对进程执行是否异步的影响
是一个有用的函数,可以使开发者在需要确保外部程序完全执行结束后再继续执行代码的场景中,很方便地实现同步操作。然而,需要谨慎使用,以避免在不适当的场合(如在主线程中处理耗时任务)导致应用程序响应性能问题。原创 2024-04-13 10:06:29 · 1424 阅读 · 0 评论 -
qt-C++笔记之获取当前文件名所在路径并拼接出新文件路径的一种方法
类通常用于文件系统信息的查询和目录管理。原创 2024-04-12 00:03:18 · 614 阅读 · 0 评论 -
qt-C++笔记之使用Cmake来组织和构建QWidget工程项目
— 2024-03-10。原创 2024-03-10 07:14:03 · 1076 阅读 · 0 评论 -
qt-C++笔记之使用QProcess去执行一个可执行文件时指定动态库所存放的文件夹lib的路径
来启动一个可执行文件,并且需要指定动态库(如.so或.dll文件)所在的目录时,可以通过设置环境变量来实现。在Linux系统中,通常是设置。环境变量的具体设置可能会根据你的系统环境和需求有所不同。上述代码只是一个基本的框架,可能需要根据实际情况进行调整。在Windows系统中,则是设置。在Qt C++中,当你使用。原创 2024-02-26 22:21:20 · 1095 阅读 · 0 评论 -
qt-C++笔记之事件过滤器
而不使用事件过滤器的方式更加直接,通常用于处理特定对象的事件。你可以在这个方法中编写自定义的逻辑来决定是否拦截某个事件,改变事件的默认行为,或者在事件传递到目标对象之前进行一些特殊处理。通过安装事件过滤器,你可以在事件到达目标对象之前对其进行拦截和处理,这允许你在不修改目标对象代码的情况下增加额外的行为。:事件过滤器可以用来监控事件流,帮助开发者理解事件是如何在应用程序中流转的,这对于调试事件相关的问题非常有用。如果不使用事件过滤器,你可能会直接在对象的事件处理方法中处理所有的事件,例如在。原创 2024-02-25 15:22:24 · 1143 阅读 · 0 评论 -
qt-C++笔记之判断一个QLabel上有没有load图片
是用来同时显示文本和图片的,你可能还需要检查其他属性,比如。是用来显示文本或者图片的一个控件。控件上是否加载了图片,你可以检查它的。对象,如果没有图片被加载,则返回。在上面的代码中,我们首先检查。属性,以确定控件的当前状态。,则表示没有图片被加载到。对象是否有效,通过调用。函数返回的指针是否为。原创 2024-02-10 00:24:26 · 1193 阅读 · 0 评论 -
qt-C++笔记之contains()和isEmpty()函数、以及部分其他函数列举
根据所使用的容器类型,它的确切功能可能略有不同,但基本的用法是相似的。下面列举了一些常见的函数,这些函数通常可用于各种容器类,如QString、QList、QVector、QMap、QSet等。使用这些函数时,请确保你的容器已经被适当地初始化,否则可能会遇到未定义的行为。是两个常用的函数,它们通常用于不同的类和上下文中来检查容器的内容。这些函数都是非常高效的,因为它们通常是在容器的内部实现中直接检查状态,而不需要遍历整个容器。函数用于检查容器是否为空。在不同的容器类中,它用来判断容器内是否没有任何元素。原创 2024-01-30 23:06:44 · 4158 阅读 · 0 评论 -
qt-C++笔记之QStringList、QList<QString>、QVector<QString>、QString、QChar、QList<QChar>区别
— 2024-01-30 凌晨0:27。原创 2024-01-30 00:29:17 · 2301 阅读 · 0 评论 -
qt-C++笔记之使用信号和槽实现跨类成员变量同步响应
【代码】qt-C++笔记之使用信号和槽实现跨类成员变量同步响应。原创 2024-01-24 23:44:01 · 652 阅读 · 0 评论 -
qt-C++笔记之命令行编译程序,特别是使用Q_OBJECT宏包含了moc(Meta-Object Compiler)的情况
— 2024-01-24。原创 2024-01-24 23:29:05 · 1930 阅读 · 0 评论 -
qt-C++笔记之QProcess
此代码省略了错误处理和信号/槽连接,适用于简单的同步命令执行。如果你想要异步处理或更复杂的错误处理,你需要采用第一个例子中的更详细的方法。代码应该具有清晰的命名,详细的注释,以及适当的输出信息。原创 2024-01-07 23:53:32 · 1558 阅读 · 0 评论 -
qt-C++笔记之app.processEvents()和QApplication::processEvents()的区别
对象来处理等待中的事件。这样做的好处是,你可以使用。代码1和代码2的区别在于代码1中使用了一个具体的。这种方式是直接调用静态成员函数,不需要创建。这样做的好处是,你无需创建一个具体的。函数,而代码2中直接使用了静态成员函数。这种方式是通过创建一个具体的。对象,可以直接处理等待中的事件。在代码2中,我们直接通过类名。在代码1中,我们创建了一个。,并通过该对象调用了。原创 2023-12-20 02:26:57 · 726 阅读 · 0 评论 -
qt-C++笔记之std::tostring()、.toStdString()、.toLocal8Bit().constData()的使用场景
是在不同情况下使用的字符串转换方法,具有不同的用途和适用场景。使用场景:将基本数据类型(如整数、浮点数等)转换为字符串。指针,用于与接受C风格字符串参数的函数进行交互。在使用这些方法时,请确保包含了相应的头文件,如。适用类型:整数、浮点数等基本数据类型。的生命周期足够长,以避免悬空指针问题。原创 2023-12-15 00:22:36 · 3676 阅读 · 1 评论 -
qt-C++笔记之addAction和addMenu的区别以及QAction的使用场景
是一个通用的用户交互元素,用于表示用户界面中的操作。函数的第一个参数是发送信号的对象,第二个参数是信号的名称,第三个参数是接收者对象,第四个参数是槽函数的名称。对象的指针,表示菜单栏的父对象。在这种情况下,我们将菜单栏设置为窗口的子对象,以便在窗口关闭时自动释放菜单栏内存。通过使用动态内存分配和指定父对象,我们可以确保在窗口关闭时,菜单栏对象会自动被销毁并释放内存。根据你的需求和菜单结构,选择合适的函数以在菜单中添加菜单项或子菜单。对象,并将其设置为窗口的菜单栏,并将菜单栏的指针存储在。原创 2023-12-11 23:34:58 · 3150 阅读 · 0 评论 -
qt-C++笔记之组件-分组框QGroupBox
【代码】qt-C++笔记之组件-分组框QGroupBox。原创 2023-12-04 01:14:14 · 877 阅读 · 0 评论 -
qt-C++笔记之addItem(), addWidget(), addLayout()
在上面的示例中,我们使用QVBoxLayout创建一个垂直布局,并将其设置为一个QWidget的布局。然后,使用addWidget()函数将QPushButton和QLabel添加到布局中,并指定了不同的参数,如行号、列号和对齐方式。通过使用这些函数,您可以根据需要将小部件和布局组织到不同的容器中,并指定它们的位置和排列方式。是一个用于添加布局的函数,它的作用是将一个布局添加到另一个布局中。它的参数是一个布局对象,可以是。是用于布局管理的函数,它们用于将控件或布局添加到容器中,以实现界面的布局。原创 2023-12-03 21:26:35 · 10164 阅读 · 0 评论 -
qt-C++笔记之QStringList
— 2023-12-03。原创 2023-12-03 18:48:05 · 4685 阅读 · 0 评论 -
qt-C++笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解
屏幕坐标系:屏幕坐标系是全局的坐标系,用于描述屏幕上的位置。屏幕坐标系的原点通常位于显示器的左上角,与窗口坐标系的原点不一定对齐。窗口坐标系:在窗口中,坐标系的原点通常位于窗口的左上角。返回的坐标是相对于接收鼠标事件的窗口部件的局部坐标系,原点位于左上角,x 轴向右,y 轴向下延伸。返回的坐标是相对于接收鼠标事件的窗口部件的局部坐标系。具体来说,坐标系的原点位于窗口部件的左上角,x 轴向右延伸,y 轴向下延伸。,可以确保在处理右键点击事件之外的其他类型的鼠标点击事件时,仍保留基类的默认行为。原创 2023-12-03 11:49:05 · 3402 阅读 · 0 评论 -
qt-C++笔记之主线程中使用异步逻辑来处理ROS事件循环和Qt事件循环解决相互阻塞的问题
是ROS提供的一个异步事件处理器,用于在单独的线程中处理ROS的回调函数和事件循环。是ROS提供的一个阻塞函数,用于启动ROS节点的事件循环并等待节点退出的信号。是ROS提供的一个异步事件处理器,用于在单独的线程中处理ROS的回调函数和事件循环。函数时,它会启动一个新的线程,并在该线程中执行ROS的事件循环。是Qt应用程序的主事件循环函数。是ROS提供的一个阻塞函数,用于启动ROS节点的事件循环并等待节点退出的信号。是ROS提供的一个类,可以在单独的线程中处理ROS的事件循环,而不会阻塞Qt的事件循环。原创 2023-11-29 23:04:12 · 1843 阅读 · 2 评论