首页
学习
活动
专区
圈层
工具
发布

学习 QT 过程中的一些笔记

窗口体系 坐标体系: 以左上角为原点 对于嵌套窗口,其坐标是相对于父窗口来说的 信号和槽 点击按钮关闭窗口 // 参数1 信号的发送方 参数2 发送的信号(函数地址) 参数3 信号的接收方 参数4 处理的槽函数...a, b 除 a 和 b 按值进行传递外,其他参数都按引用传递 操作符重载函数参数 ( ) 参数可以通过按值 (如: (a, b)) 和按引用 (如: (&a, &b)) 两种方式传递 可修改标示符...值传递 推荐使用值传递 & 引用传递 this a 按a值传递, 即只能看到a a, &b 将a按值传递, b按引用传递 =, &a, &b 除a和b按引用进行传递外, 其他参数都按值传递 &, a,...b 除a和b按值进行传递外, 其他参数都按引用传递 */ [=](){ bin->setText("aaaa"); }(); // 值传递和引用传递都可以修改成功, ();是函数调用, 前面是函数声明...实现登录窗口 利用布局方式 给窗口进行美化 选取 widget 进行布局 水平布局、垂直布局、栅格布局 给用户名、密码、登录、退出按钮进行布局 默认窗口和控件之间有间隙,可以调整 layout 利用弹簧进行布局

1.5K40

【从零开始的Qt开发指南】(十六)Qt 事件入门:从原理到实战,掌握事件处理的核心秘诀

,在 Qt 中都会被封装成一个个事件对象,作为应用程序的 "消息使者",在组件之间传递并触发相应的处理逻辑。...Qt 事件模型,让开发者无需关注系统差异。...如果该组件不处理该事件,Qt 会将事件传递给它的父组件,直到事件被处理或传递到顶层组件。 事件销毁:事件处理完成后,Qt 会自动销毁事件对象,避免内存泄漏。...二、Qt 事件处理的核心方法 —— 重写事件处理函数 2.1 事件处理的核心思想:重写虚函数 Qt 中所有组件(继承自QWidget或QObject)都内置了事件处理的能力,这是因为QWidget...表示当前组件不处理该事件,事件会继续传递给父组件这两个函数可以用于控制事件的传递路径,实现事件的拦截或转发。

22921
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Qt | TCP服务器实现QTcpServer,使用线程管理客户端套接字

    03、QThread>>>线程管理:QThread 提供了一种简单的方式来管理线程的生命周期,包括启动、停止和退出线程。信号与槽:QThread 支持 Qt 的信号与槽机制,允许线程之间进行通信。...类,继承自 QWidgetclass Dialog : public QWidget{ Q_OBJECT // 声明该类是 Qt 的一个对象,支持信号和槽机制​public: // 构造函数...,接收一个 QWidget 指针作为父窗口,默认为 nullptr Dialog(QWidget *parent = nullptr);​private: QLabel *statusLabel...的构造函数,并传递父窗口参数{ statusLabel = new QLabel; // 创建一个新的QLabel用于显示状态信息 statusLabel->setWordWrap(true...的信号和槽机制​public: // 构造函数,接收一个 QObject 指针作为父对象,默认为 nullptr TcpServer(QObject *parent = nullptr);​

    4.3K10

    初步学习Qt布局

    当可用空间发生变化时,这些布局将自动调整widgets的位置和大小,以确保它们布局的一致性和用户界面主体可用。 所有QWidget的子类都可以用布局来管理它们的子类。...当使用布局的时候,在创建子widget时,没必要给它传递父类。...控件只能以其他控件作为父类,不可以以布局作为父类。在布局上,可以使用addLayout来嵌套布局;被嵌套的布局,将变成上层布局的子布局。...在QLabel中使用富文本会给布局的父类widget带来一些问题。问题发生的原因是因为当label被文字环绕时,富文本被Qt的布局管理器控制。...窗体小部件可以显示数据和状态信息,接受用户输入,和提供组织其他窗体小部件的容器。 没有嵌入到父级窗体小部件的部件被称为窗口(window)。

    8.1K10

    Effective Qt

    (注:这里会有一些代码设计的思路,不存在绝对的正误,只是一种习惯) 避免在子控件中使用 parentWidget() 方法获取 QWidget 指针强制转换为父控件指针,调用父对象方法。...在对子控件布局的时候,某些情况下实例化子控件时传递的父指针会被置空,例如对子控件设置一些特殊的窗口标志。...而是在某些会导致频繁重绘的操作下,程序异常卡顿,但是不涉及重绘的操作,程序又看起来没问题。 避免匿名空间内声明 Qt 类型、避免类外声明static Qt 类型。...获取 connect() 方法的返回值,可以在 debug 时快速的发现自己的槽和信号没有正确的连接。...简单来说 adjustSize() 是根据子控件调整自己的大小,updateGeometry() 是根据自己的大小和子控件的大小调整子控件的布局。

    1.1K50

    PySide6 GUI 编程(2):窗口设置与基础控件

    事件处理:子控件通常会将事件(如鼠标点击、键盘输入等)传递给它们的父对象。通过指定 self 作为父对象,按钮能够将事件传递给 MyPushButton 类的实例,允许在类中处理这些事件。...布局管理:在Qt中,控件的布局是基于父子关系来管理的。指定 self 作为父对象可以确保按钮被正确地放置在窗口内,并且可以利用布局管理器来自动调整按钮的位置和大小。...因此,在 MyPushButton 类中创建一个 QPushButton 实例并将其添加到窗口时,传递 self 作为父对象是至关重要的,它确保了按钮能够正常工作并集成到窗口中。...如果不传递父对象,QPushButton 将无法正确地与窗口交互,也无法利用Qt框架提供的各种功能。...在Qt中,窗口标题通常与 QMainWindow 或 QWidget 类相关联,它们是能够提供完整窗口装饰(如标题栏、边框、状态栏等)的窗口控件。

    1.8K53

    【从零开始的Qt开发指南】(十二)Qt 布局管理器终极指南:5 大布局 + 实战案例,搞定所有界面排版需求

    而 Qt 的布局管理器带来了三大核心优势: 自适应窗口缩放:窗口放大 / 缩小时,控件自动调整尺寸和位置,无需手动修改代码; 统一间距与边距:自动管理控件之间的间距和控件与窗口的边距,界面更整洁; 支持复杂嵌套...; 间距(Spacing):布局中相邻控件 / 子布局之间的距离; 拉伸因子(Stretch):控件或子布局占据多余空间的权重,值越大,占据的多余空间越多; 布局嵌套:一个布局可以作为子布局添加到另一个布局中...”,若窗口宽度刚好容纳控件,拉伸因子无效 —— 需确保窗口可横向缩放; 嵌套布局边距叠加:子布局的边距会与父布局的间距叠加,导致控件间距过大,建议子布局不设置边距,统一由父布局控制间距。...嵌套布局间距叠加: 原因:父布局的间距与子布局的边距叠加,导致控件间距过大; 解决方案:子布局不设置边距,统一由父布局控制间距。...统一边距和间距:整个项目的布局边距(建议 20-30px)和间距(建议 15-25px)保持一致,提升界面统一性; 灵活使用拉伸因子:通过拉伸因子控制控件缩放优先级,重要控件(如文本编辑区)设置更大的拉伸因子

    88222

    【QT】QT窗口部件

    QT窗口部件 默认部件基类 QT提供的默认部件基类包括QMainWindow、QWidget、和QDialog,这三个部件基类也是用的最多的。...QMainWindow是带有菜单栏、工具栏、状态栏的主窗口类,它有自己单独的布局。布局有一个中心区域,通常是标准的QT部件,也可以是定制的部件,且必须有一个中心小部件。...QWidget类是所有部件对象的基类,被称为基础窗口部件。 QWidget提供自我绘制和处理用户输入等基本功能,如接收鼠标、键盘和其他事件,并且在屏幕上绘制自己的表现。...非顶级窗口部件时父窗口的子部件。 QWidget构造函数有两个参数:QWidget*parent = 0,QT:WindowFlages f = 0。...另外,我们也可以连接done()槽,传递给它Accepted或Rejected。

    2K20

    Qt官方示例-标签对话框

    TabDialog类定义   TabDialog类是的一个子类QDialog的显示一个QTabWidget和两个标准对话的按钮。...我们在不使用父窗口小部件的情况下构造了这些窗口中的每一个,因为选项卡窗口小部件会在将它们添加到父窗口小部件时使它们重新定位。   ...类实现   GeneralTab小部件仅显示有关TabDialog传递的文件的一些信息。...&fileInfo, QWidget *parent = nullptr); }; PermissionsTab类实现   PermissionsTab显示有关文件访问信息的信息,并在以嵌套布局排列的小部件中显示文件许可权和所有者的详细信息...安装目录找到: C:\Qt\{你的Qt版本}\Examples\{你的Qt版本}\widgets\dialogs\tabdialog 相关链接 https://doc.qt.io/qt-5/qtwidgets-dialogs-tabdialog-example.html

    2.1K10

    【从零开始的Qt开发指南】(二十三)Qt 界面优化之 QSS 实战指南:从入门到精通,让你的界面颜值飙升!

    1.2 QSS 与 CSS 的异同 需要注意的是,QSS 并非完全照搬 CSS,由于 Qt 的设计理念和网页前端存在本质差异,QSS 仅支持部分 CSS 属性,整体语法比 CSS 更简单...3.2.3 QSS 的层叠特性 当全局样式和指定控件样式设置的属性不冲突时,两种样式会叠加生效;如果属性冲突,则指定控件样式的优先级更高(局部覆盖全局)。...示例 2:通过父类选择器匹配子类控件 QPushButton 是 QWidget 的子类,因此使用 QWidget 作为类型选择器时,QPushButton 也会被匹配: // main.cpp...4.2.5 后代选择器与子选择器 后代选择器匹配父控件的所有后代控件(包括直接子控件和间接子控件),语法是父控件选择器与子控件选择器之间用空格分隔;子选择器仅匹配父控件的直接子控件,语法是父控件选择器与子控件选择器之间用大于号...总结 通过本文的学习,相信你已经掌握了 QSS 的核心用法和实战技巧。QSS 作为 Qt 界面美化的核心工具,能够帮助你快速提升程序的视觉体验。

    1K11

    从零开始的Qt开发指南:(三)信号与槽的概念与使用

    信号与槽机制的核心价值在于解耦—— 信号的发送者不需要知道谁会接收信号,槽函数也不需要知道哪些信号会关联自己,Qt 框架会负责完成信号的传递和槽函数的调用。...这种松散耦合的设计,让 Qt 程序的扩展性和维护性大大提升。...支持参数传递和函数重载,但不能有默认参数。 可以像普通函数一样直接调用,也可以通过信号触发调用。 必须有完整的声明和实现(定义)。...管理 Qt 对象树,便于对象的内存管理和生命周期控制。 这一设计是与 Java 的单根继承体系类似的,通过统一的父类为所有 Qt 对象提供核心能力。...2.2.1 纯代码实现(不使用 UI 文件) 2.2.2 代码说明 父对象设置:将按钮的父对象设为当前窗口(this),这样按钮会随窗口一起销毁,无需手动管理内存(Qt 对象树机制)。

    49112

    从零开始的Qt开发指南:(二)使用Qt Creator构建项目与Qt底层机制的深度解析

    控件创建:new QPushButton("Hello Qt", this)创建按钮对象,第二个参数this表示将当前Widget窗口作为按钮的父对象。...处理命令行参数:通过argc和argv参数传递命令行参数,可通过QApplication::arguments()函数获取参数列表。...setupUi(QWidget *parent)函数:用于将 UI 控件添加到父窗口(parent)并设置控件的布局、属性等。...该文件由 Qt Creator 设计模式自动生成和维护,开发者无需手动编辑,但了解其结构有助于排查界面布局问题。...复杂布局使用布局管理器:对于包含多个控件的复杂界面,不建议手动设置控件坐标(易导致界面拉伸时控件位置错乱),应使用 Qt 的布局管理器(如QVBoxLayout垂直布局、QHBoxLayout水平布局、

    2.7K42

    【专业技术】Qt的新玩意

    using C++以及Integrating QML Code with existing Qt UI code中需要Qt知识 QML项与QWidget比较 QML中的item与QWidget很相似:...有三不同种结构的QWidget: 不能作为父部件的简单部件(QLabel, QCheckBox, QToolButton等) 常作为其他部件的父部件(QGroupBox, QStackedWidget,...QML组件和QWidget的parent概念最明显区别在于,子项位置是相对于父项的,但不会要求子项完全包含在父项中(当然可在必要时设置子项的clipped属性).这个差异具有深远的影响,例如: 围绕部件的阴影或高亮可作为部件的子项...组合部件 一些部件支持组合其他部件作为其实现细节,并为组合体提供高层次的API.例如QSpinBox 由一个QLineEdit和操作数值的向上向下按钮组成的.QFileDialog 作为一个完整的部件为用户提供查找和选择文件名称的功能...QGraphicsWidget通常使用QGraphicLayout来布局.QML不使用QGraphicLayout,因为Qt的布局对动画和UI的流畅性不太友好,因此几何上的接口是主要的不同点.当定义QML

    4K60

    其实,AI 也会糊弄你…

    于是有了如下对话: Q:我在一个 widget上选择文本,为什么会导致QMainWindow移动 A:在 Qt 中,当你在一个 widget 上选择文本时,可能会触发鼠标事件,这可能会导致父级窗口(如...这是因为鼠标事件会被传递给父级窗口处理。 为了防止这种情况发生,你可以在子 widget 上重写鼠标事件处理函数,并在该函数中阻止事件传递给父级窗口。...在你的子 widget 类中,你可以重写 eventFilter 函数来过滤鼠标事件,并在其中阻止事件传递给父级窗口。...通过使用事件过滤器,你可以拦截鼠标事件并阻止其传递给父级窗口,从而避免父级窗口移动。 ​...event->accept(),你可以阻止鼠标事件传递给父级窗口,从而防止父级窗口移动。

    52710

    【QT】QT 的窗口坐标 & 信号与槽

    ,坐标系原点就是相对于父窗口 / 控件的 举个例子:使用Qt中的坐标系设置控件的位置 QPushButton 的父元素/父控件/父窗口 就是 QWidget QWidget 没有父元素(NULL),就相当于父元素就是整个显示器桌面了...Qt 内置的信号就已经足够应付大部分开发场景了 Qwidget 虽然 Widget 还没有定义任何信号,但是由于继承自 QWidget,和 QObject,这俩类里面已经提供了一些信号了,可以直接使用..., 所谓的 Qt 的信号,本质上也就是一个"函数” Qt 5 以及更高版本中,槽函数和普通的成员函数之间,没啥差别了。...Qt 生成的信号函数的实现,要配合 Qt 框架做很多既定的操作 作为信号函数,这个函数的返回值必须是 void。...,把信号和槽连上了之后,就不必管了,主动断开往往是把信号重新绑定到另一个槽函数上 5.2 Lambda 表达式 ⛳Qt5在Qt4的基础上提高了信号与槽的灵活性,允许使用任意函数作为槽函数。

    1.1K10

    【从零开始的Qt开发指南】(十八)Qt 事件进阶:定时器、事件分发器与事件过滤器的实战宝典

    ,事件会继续向上传递给父组件。...2.2 事件分发器实战:拦截鼠标按下事件 下面通过重写event()函数,实现 “拦截鼠标按下事件,使其不触发mousePressEvent” 的功能,验证事件分发器的优先级。...关键说明 事件分发器的优先级高于普通事件处理函数,先于mousePressEvent等函数执行; 返回true表示事件已被处理,Qt 会停止事件的进一步传递;若返回false或调用QWidget::event...2.3 事件分发器使用注意事项 不要滥用拦截:拦截事件后需确保不影响组件的默认行为(如窗口关闭、最小化等事件),未处理的事件务必交给父类处理(return QWidget::event(event));...; 事件传递顺序:事件过滤器的优先级高于事件分发器,事件先经过过滤器,再到目标组件的event()函数; 避免循环过滤:若过滤器和目标组件相互安装过滤器,可能导致事件循环传递,需谨慎设计逻辑。

    28211

    【QT】QT界面的美容院 -- QSS

    - 知乎 网页开发作为 GUI 的典型代表,也对于其他客户端 GUI 开发产生了影响,Qt 也是其中之一。...当然,由于 Qt 本身的设计理念和网页前端还是存在一定差异的,因此 QSS 中只能支持部分 CSS 属性。整体来说 QSS 要比 CSS 更简单一些。...Border 矩形区域:控件的边框。 Padding 矩形区域:内边距,边框和内容之间的距离。 Margin 矩形区域:外边距,边框到控件 geometry 返回的矩形边界的距离。...两个输入框和按钮的 minimumHeight 均设置为 30(元素在布局管理器中无法直接设置 width 和 height,使用 minimumWidth 和 minimumHeight 代替,此时垂直方向的...在 CSS 中,整个网页的样式都是 CSS 一手负责,CSS 功能更强大,并且也更可控。 相比之下,Qt 中是以原生 API 为主,来控制控件之间的尺寸、位置等,QSS 只是起到辅助的作用。

    1.3K10
    领券