自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 收藏
  • 关注

原创 52常用控件_QCheckBox的使用

QCheckBox 表示复选按钮.可以允许选中多个.和 QCheckBox 最相关的属性也是 checkable 和 checked ,都是继承自QAbstractButton至于 QCheckBox 独有的属性 tristate 用来实现"三态复选框这个东西比较冷门,不做讨论.

2025-04-16 21:24:53

原创 51常用控件_QRadioButton的使用

QRadioButton 是单选按钮可以让我们在多个选项中选择一个作为 QAbstractButton 和 Qwidget 的子类,上面介绍的属性和用法,对于 QRadioButton同样适用.QAbstractButton 中和 ORadioButton关系较大的属性。

2025-04-16 21:22:39

原创 50常用控件_QPushButton

使用 QPushButton 表示一个按钮.这也是当前我们最熟悉的一个控件了OPushButton 继承自 QAbstractButton .这个类是一个抽象类是其他按钮的父类抽象类 这个类包含了 纯虚函数无法创建出实例(对象)就得创建子类,重写上述的纯虚函数,才能够创建出子类的实例在Qt Designer 中也能够看到这里的继承关系QAbstractButton 中,和 QPushButton 相关性较大的属性。

2025-04-16 21:11:14 304

原创 49常用控件_QWidget的styleSheet属性

通过 CSS 设置 widget 的样式CSS(Cascading Style Sheets 层叠样式表)本身属于网页前端技术主要就是用来描述界面的样式.所谓“样式"包括不限于 大小,位置,颜色,间距,字体,背景,边框等.我们平时看到的丰富多彩的网页,就都会用到大量的 CSSOt 虽然是做 GUI 开发,但实际上和 网页前端有很多异曲同工之处因此 Ot 也引入了对于 CSS的支持.

2025-04-12 13:51:11 780

原创 48常用控件_QWidget的focusPolicy属性

所谓"焦点”,指的就是能选中这个元素.接下来的操作(比如键盘操作),就都是针对该焦点元素进行的了.这个对于 输入框,单选框,复选框等控件非常有用的.• Qt::WheelFocus : 类似于 Qt::StrongFocus , 同时控件也通过⿏标滚轮获取到焦点 (新增。4)修改第二个输入框 focusPolicy 为 t::TabFocus ,则只能通过tab 选中,无法通过鼠标选中。3)修改第二个输入框的 focusPolicy 为Qt::NoFocus ,则第二个输入框不会被 tab/鼠标左键。

2025-04-09 19:57:35 308

原创 47常用控件_QWidget的toolTip属性

1)在界面上拖放两个按钮objectName 设置为 pushButton_yes 和 pushButton_no。toolTip 只是给用户看的.在代码中一般不需要获取到 toolTip.可以看到鼠标停到按钮上之后,就能弹出提示。一个 GUI 程序,界面比较复杂, 按啥的很多~~这个是 QtCreator 提供的 toolTip。代码示例: 设置按钮的 toolTip。国际单位制(1000 来换算的)就是告诉我们函数的参数列表。3)运行程序,观察效果。usec => 微秒。

2025-04-09 19:22:21 120

原创 46常用控件_QWidget的font属性

这个情况,咱们作为一个程序员,就可以参考一下别人的程序是怎么安排的.或者别人写的网页是怎么安排的~~上述属性具体怎么设置,实际开发中,往往有专门的 美工/设计/UED 来进行确定~~通过属性编辑这样的方式,虽然能够快速方便的修改文字相关的属性,但是还不够灵活。2)在右侧的属性编辑区,设置该label的font 相关属性。但是如果是一些小公司,没有美工~~甚至都没有产品经理~~在这里调整上述属性,可以实时的看到文字的变化。谷歌浏览器--右键--检查。文字相关的属性~~ 就。2)执行程序,观察效果。

2025-04-09 19:03:42 219

原创 45常用控件_QWidget的cursor属性

Qt 自带的光标形状有限我们也可以自己找个图片,做成鼠标的光标比如我们有请滑稽老铁1)创建qrc 资源文件,添加前缀/,并加入 huaji.jpg2)编写 widget.cpp3)运行程序,观察效果截图无法截到鼠标光标,效果为widget光标为自定义图像huaji.jpg。

2025-04-09 11:25:35 225

原创 44常用控件_QWidget的windowOpacity属性

注意,C++ 中 float 类型遵守 IEEE 754 标准,因此在进行运算的时候会有一定的精度误差.因此 1-0.1 的数值并非是0.9.3)执行程序,可以看到,点击了几下-之后,就可以透过窗口看到后面的背景.点击 +又会逐渐恢复。很多时候写代码的时候,往往是要把一个大的项目拆分成几个部分/模块~~由不同的人负责分别完成。2上述代码中,在进行设置之前,先判定了 opacity 的范围.然后再决定是否要设置.你在使用别人提供的 API 来进行调用的时候,你是否要对传入的参数进行检查呢?

2025-04-09 10:23:04 809

原创 43常用控件_使用qrc文件管理资源

qrc 机制本质上就是把 图片 的二进制数据,转成 C++ 代码.(最终就会在代码中看到很大的 char 数组,里面就是图片的二进制数)导入图片的时候, 需要确保你导入的图片必须在 resource.qrc 文件的同级目录,或者同级目录中的子目录里~~在构建程序的过程中,Qt 会把资源文件的二进制数据转成 cpp 代码,编译到 exe 中从而使依。qrc 文件是一种XML格式的资源配置文件,它用XML记录硬盘上的文件和对应的随意指定的资。这里的字节内容就是 rose.jpg 里的每个字节的数据。

2025-04-08 19:37:59 316

原创 42常用控件_QWidget的windowIcon属性

给定的相对路径是 ./image/rose,jpg => 在基准目录中,先找到 image 目录, 再在里面找到 rose.jpg。给定相对路径 ./rose.jpg => 在基准目录(D:/) 直接找 rose.jpg。此时,这俩字符就被视为是一个字符了(回车符)--\表示转义,\r换行。件的生命周期是足够的.要通过 Qt 对象树来释放对象。因此相比于使用绝对路径的方式使用相对路径是更好的~~相对路径,是以给定目录为基准,以,或者.的方式开头。通过绝对路径的方式引入图片是不科学的.

2025-04-08 18:58:32 282

原创 41常用控件_QWidget的windowTitle属性

当前不应该给按钮设置 window Title.但是实际设置了之后,没有任何效果,也没有报错。windowTitle 属性,只能针对 顶层窗口 这样的 QWidget 才有效。这一点,更希望当代码写出不科学的代码的时候,能够给一些报错提示~~当前 windowsTitle 属性, 是从属于 QWidget。上述设置操作针对不同的 widget 可能会有不同的行为。如果是顶层 widget(独立窗口),这个操作才会有效。如果是子 widget,这个操作无任何效果。此时“没有报错”这样的设定是不太科学的~

2025-04-07 21:24:42 125

原创 40常用控件_WindowFrame的影响

其中 geometry(),width(),height(),rect(),size() 则是按照不包含 window frame 的方式来计。其中x(),y0,frameGeometry(), pos(),move() 都是按照包含 window frame 的方式来计算。有的 API 的位置信息是以 Widget 本体左上角为原点的(不考 Window frame)时候就有两种算法.包含 window frame 和 不包含 window frame.都是不考虑 window frame。

2025-04-07 21:07:32 148

原创 39常用控件_QWidget的geometry属性

对于 Ot 的坐标系,不要忘记是一个“左手坐标系其中坐标系的原点是当前元素的父元素的左上角.一旦你和面试官不在一个频道上,就算你口吐莲花~~ 面试官看起来都会觉得,这个小伙。③ 当前代码实际执行的效果,是在调整左上角位置.左上角位置改变的同时,咱们的原则是,你的面试官/领导怎么读,你就怎么读,不要去纠正人家~~如何才能实现“平移”的效果,保持尺寸不变,整个按钮位置变化?~~(如果不设置随机种子,每次随机序列生成的都是一样的数)也可以做到,鼠标不点击,只要挪到按钮上,就会让按钮移动~~

2025-04-07 19:22:41 709

原创 38常用控件_QWidget的enable属性(2)

在同一个界面中,要求不同的控件的 objectName 也是必须不同的.(不能重复)生成的过程中就会感知到,界面上都有哪些控件,每个控件的objectName.元编程.Qt 会根据 ui 文件, 生成一个 ui_widget.h 文件。clicked 信号有两个版本, 一个是无参数的,一个是 bool 参数的。ui->pushButton 2 // 得到了第二个按钮对应的对象。ui->pushButton // 得到了第一个按钮对应的对象。最常用的就是 clicked.按钮提供的信号还挺多的。

2025-04-06 16:07:48 220

原创 37常用控件_QWidget的enable属性(1)

所谓“禁用"指的是该控件不能接收任何用户的输入事件,并且外观上往往是灰色的。②Qt Creator 右侧,可以看到 QWidget 的各种属性~~绑定一个槽函数,控件还是不能接收任何用户的输入事件,无任何反应。③enabled:描述了一个控件是否处于“可用”状态。上述属性都可以通过 Qt 的文档来一一进行了解~~这些属性不需要大家每个都去了解,只需要。Qt 控件体系中,通用的部分~并且在这里也能直接进行编辑~~

2025-04-06 15:17:27 166

原创 34信号和槽_使用lambda表达式定义槽函数

由于此处 button 是 new 出来的变量,生命周期跟随整个窗口(挂到对象树上, 窗口关闭才会释放)(特别是引用类型变量,可能会有引用变量外部销毁函数还在使用情况)这个写法的含义就是把上层作用域中所有的变量名都给捕获进来!回调函数执行时机是不确定的~~(用户啥时候点击按钮不知道的)如果当前 lambda 里面想使用更多的外层变量咋办?如果按引用,还得更关注这个引用的变量本身的生命周期~~无论何时用户点击了按钮 捕获到的变量都能正确使用~~通过变量捕获,获取到外层作用域中的变量.④ 后续如果我们对应的。

2025-04-06 13:29:45 278

原创 36常用控件_控件概述

往往会有专业的美工(专门学美术的兄弟),他们有更好的艺术细菌~~ 就能设计出更好看的界面~~一个图形化界面上的内容,不需要咱们全都从零去实现,Qt 中已经提供了很多内置的控件了。①随着时代的发展,新的 GUI 开发体系越来越丰富.提供的控件数量/质量越来越提升了。②Qt 的控件虽然很多,但是整体来说,颜值,还是比更现代的控件体系,要逊色一筹~~Qt Design Studio收费的~~ 咱们课堂上暂时不涉及到这部分的内容~~Qt Design Studio制作出来的界面的美观程度就是业界最领先的一档~~

2025-04-06 13:27:40 231

原创 35信号和槽_信号槽小结

低内聚:写代码的时候,实现某个功能点,围绕这个功能的相关代码被放到整个项目的各个地方。信号本质就是成员函数.(函数的定义是 Qt 自己生成的,咱们只需要写函数声明)很多面试 Qt 的题目,也是和上述 C++,数据结构,系统网络基础知识是相关的。很有可能需要的信号槽,还得到这个类的父类/爷爷类/祖宗类去进行查询~~高内聚:写代码的时候某个功能点的代码都被集中放在一起了~~多对多效果.(非常类似于 mysql 中的多对多的)2)个数,信号的参数要多于槽的参数。发射信号的时候,把参数传递给对应的槽.

2025-04-05 23:02:17 214

原创 33信号和槽_信号和槽断开连接

主动断开情况往往把信号重新绑定到另一个槽函数上~(从槽一切换到槽二,不然就是多绑定槽函数)要是不解绑disconnect--相当于给一个信号绑定了多个槽函数(qt信号槽支持)disconnect 使用的方式和 connect 是非常类似的。大部分的情况下,把信号和槽连上了之后,就不必管了。disconnect用的比较少的。关于信号槽两个补充的知识点.

2025-04-05 22:10:11 221

原创 32信号和槽_信号和槽存在的意义(2)

张三这个同学,可以选 语文和数学 . 李四这个同学可以选 语文 和 英语。connect 的作用,就相当于刚才的这个关联表一样!语文这门课程,既可以被张三选择,也可以被李四选择~~⑤综上,Qt 引入信号槽机制,最本质的目的(初心)实际上,随着程序开发这个事情,大家经验越来越多~~其他的 GUI 框架往往也不具备这样的特性~~信号槽在 Qt 当年,是一个很大的卖点~~一个学生,可以选择多门课程来学习。一门课程,也可以被多个同学来选择。其实在 GUI 开发的过程中,绝大部分情况,一对一就够用了。

2025-04-05 20:54:09 232

原创 31信号和槽_信号和槽存在的意义(1)

信号槽,其实在 GUI 开发的各种框架中,是一个比较有特色的存在(高情商的说法~)1) 解耦合.把触发 用户操作的控件 和 处理对应用户的操作逻辑 解合。Qt 信号槽,connect 这个机制, 设想很美好的~~设计数据库的表结构,就需要理清楚实体和实体之间的关系~~①所谓的信号槽,终究要解决的问题,就是响应用户的操作.咱们写 Qt,属于客户端了,很少能直接涉及到数据库~~②其他的 GUI 开发框架搞的方式都要更简洁一些~~,设计表的时候,就有不同的写法(定式)就是对现实问题中的关键名词进行的抽象。

2025-04-05 20:15:20 202

原创 30信号和槽_带参数的信号槽(3)

这些代码就涉及到 Qt 实现的内部原理了.(此处就不去深入研究了)②Qt 中的硬性规定了,Qt 中如果要让某个类能够使用信号槽。①带有参数的信号,要求信号的参数和槽的参数要一致。参数类型要一致,如下例子(不一致,报错)最终展开的效果会得到一系列很复杂的代码。这个宏能展开成很多额外的代码。则必须要在类最开始的地方,这里的宏还能进一步展开。

2025-04-05 13:53:01 175

原创 29信号和槽_带参数的信号槽(2)

③如果我们严格要求参数个数一致, 就意味着信号绑定到槽的要求就变高了。②直观的思考,应该是要求信号的参数个数和槽的参数个数,严格一致~~信号函数的参数个数少于槽函数的参数个数,此时代码无法编译通过。要求信号给槽的参数 可以有富裕,但是不能少~~至少需要确保,槽函数的每个参数都是有值的~~此处为啥允许信号的参数比槽的参数多呢?更多的信号可以绑定到这个槽函数上了。换而言之,当下这样的规则,就。

2025-04-05 13:52:58 109

原创 28信号和槽_带参数的信号槽(1)

④Qt 中很多内置的信号,也是带有参数的.(这些参数不是咱们自己传递的)就可以通过函数-参数来复用代码,并且在不同的场景中传入不同的参数即可。不一致的时候,要求信号的参数的个数必须要比槽的参数个数要更多。有多个逻辑,逻辑上整体一致,但是涉及到的数据不同。对于 QCheckBox 复选框, 就很有用了。,与之对应的这个参数就会被传递到对应的槽函数中。clicked 信号就带有一个参数~~①信号和槽 也可以带参数。当信号带有参数的时候,这里的参数必须要一致。个数如果不一致也可以。

2025-04-05 13:06:05 245

原创 27信号和槽_自定义信号(2)

用户在 GUI, 进行某些操作,就会自动触发对应信号.(发射信号的代码已经内置到 Qt 框架中了 )实现如下效果:点击按钮,窗口标题改变(在按钮点击的时候触发自定义信号)真正的操作都包含在 mySignal 内部生成的函数定义了。Qt 内置的信号,都不需要咱们手动通过代码来触发。其实在 Qt 5 中 emit 现在啥都没做~~,更明显的标识出,这里是发射自定义的信号了。即使不写 emit,信号也能发出去!如何才能触发出自定义的信号呢?即使如此实际开发中,还是。

2025-04-04 22:22:28 259

原创 26信号和槽_自定义信号(1)

咱们的 Widget 虽然还没有定义任何信号, 由于继承自 QWidget, 和 QObject,这俩类里面已经提供了一些信号了,可以直接使用.(信号在 Qt 中是特殊的机制.Qt 生成的信号函数的实现,要配合 Qt 框架做很多既定的操作~~)非常关键.开发中大部分情况都是需要自定义槽函数的.在 GUI,用户能够进行哪些操作,是可以穷举的~~,比较少见.实际开发中很少会需要自定义信号.槽函数,就是用户触发某个操作之后,要进行的。④但是,信号,则是一类非常特殊的函数.自定义信号,本身代码比较简单的~

2025-04-04 21:45:29 146

原创 25信号和槽_自定义槽函数(2)

如果我们是通过代码的方式来创建控件,还是得手动 connect.(你的代码中没有调用 connectSlotsByName)在 Qt 中,除了通过 connect 来连接信号槽之外,还可以通过函数名字的方式来自动连接!如果我们通过图形化界面创建控件,还是推荐使用这种快速的方式来连接信号槽.当函数名符合上述规则之后,Qt 就能自动的把信号和槽给建立上联系!这个窗口就列出了 QPushButton 给我们提供的所有的信号~~正是在自动生成的 ui widget.h 中调用的。第二种自定义槽函数的方式~

2025-04-04 15:40:21 150

原创 24信号和槽_自定义槽函数(1)

qmake 构建 Qt 项目的时候, 就会调用专门的扫描器,扫描代码中特定的关键字,(slots 这种)所谓的自定义一个 槽函数,操作过程和自定义一个普通的成员函数,没啥区别!此处的 slots 是 Qt 自己扩展的关键字.(不是 C++ 标准中的语法)Qt 里广泛使用了 元编程 技术(基于代码生成代码)所谓的 slot 就是一个普通的成员函数。基于关键字自动生成一大堆相关的代码.

2025-04-04 15:19:54 195

原创 23信号和槽_connect函数的用法(4)

如果你传入的第一个参数和第二个参数不匹配,或者第三个参数和第四个参数不匹配.(不匹配,2,4 参数的函数指针,不是 1,3参数的成员函数)给 connect 提供了重载版本,重载版本中,第二个参数和第四个参数成了 泛型参数允许咱们传入任意类型的函数指针了。这个函数声明,是以前旧版本的 Qt 的 connect 函数的声明.char* 和 int* 和 函数指针 都是不同的类型!char* 和 函数指针 是同一个东西嘛?以前版本中,传参的写法和现在其实也是有区别的.即使是这两个函数指针的类型都是不一致的!

2025-04-04 13:33:38 290

原创 22信号和槽_connect函数的用法(3)

查阅文档中的信号的时候,最重点就是关注信号的 发送时机(用户进行了啥样的操作,就能够产生这个信号)1.你咋知道的 QAbstractPushButton 有个 clicked 信号?就把这些共性的东西,提取出来,放到了 QAbstractButton 类里面。Qt 里到底都提供了哪些内置的信号和槽可以让我们直接使用呢?你咋知道的 QWidget 有一个 close 槽?click点击细分为鼠标按下和鼠标释放。released:鼠标释放。pressed:鼠标按下。大家在翻阅文档的时候,

2025-04-04 13:08:45 166

原创 21信号和槽_connect函数的用法(2)

此时,第二个参数的信号必须是 QPushButton 内置的信号(父类的信号),不能是一个其他的类, 比如 QLineEdit 的信号~~close 是 QWidget 内置的槽函数. Widget 继承自 QWidget, 也就继承了父亲的槽函数.所谓的“信号”也是 Qt 中的对象内部提供的一些成员函数。button 的类型如果是 QPushButton*界面上包含一个按钮. 用户点击按钮,则关闭窗口。connect 要求,这俩参数是匹配的。具体的作用就是关闭当前的窗口/控件.

2025-04-04 12:36:05 166

原创 20信号和槽_connect函数的用法(1)

这个函数和 LinuxTCP socket 中建立连接的函数 没有任何关系,只是名字恰巧一样了。Qt 1991 年 早期 Qt 的版本, 并非带有 QObject 这样的机制~~直到 2007 年 Qt 4 发布,才引入了上述机制.Qt 中提供的这些类,本身是存在一定的继承关系的~~是不是 Java 抄的 Qt 呢?Java 1994-1995 左右。connect 具体的使用方式。

2025-04-04 12:32:36 165

原创 19信号和槽_信号和槽的基本概念

③Qt 中的信号和 Linux 中的信号,虽然不是一样的概念,但是确实有相似之处。选择一个下拉框 都会触发出不同的信号。Qt 中可以使用 connect 这样的函数,把 一个信号和一个槽 关联起来。⑥上述操作过程中,都是提前把不同的信号的处理方式,准备好了~~这个过程中就需要关注,用户当前的操作具体是个什么样的操作.1) STL 中,函数对象/仿函数.(仿函数本质是一个。后续只要信号触发了,Qt 就会自动的执行槽函数.: 用户进行不同的操作,就可能触发不同的信号.定是先把信号的处理方式准备好,再触发信号~

2025-04-02 23:02:48 152

原创 18认识Qt坐标系

平面直角坐标系(笛卡尔坐标系)数学上的坐标系右手坐标系。

2025-04-02 22:43:07 376

原创 17查询文档的方式

很可能用到的库/框架,比较小众, 网上很难找到一些相关资料。未来实际开发中,一定会用到很多的第三方库和框架的.最核心的参考资料,就是官方文档.(大机率是英文的)大家一定要有 查询文档 的意识!

2025-04-02 22:17:08 155

原创 16变量命名风格

1.起的名字要有描述性.不要使用 abc,xyz 这种比较无规律的名字来描述。2.如果名字比较长,由多个单词构成的,就需要使用适当的方式来进行区分不同单词。在编程届,驼峰命名法的规则,使用程度比蛇形命名更广泛。给变量/函数/文件/类 起名字, 非常有讲究的~~主要就是 C/C++/Pvthon 偏好蛇形命名。Java/JS/Go...... 偏好驼峰命名.你公司中使用的项目,使用的驼峰/蛇形/其他?Qt 中,偏好使用大写字母来进行单词分割的.C++中,偏好使用_来进行单词的分割.入乡随俗(统一命名规范)

2025-04-02 22:06:34 232

原创 15使用按钮实现helloworld(2)

实际开发中,是通过代码的方式构造界面,为主,还是通过图形化界面的方式构造界面为主?此时按钮对象,不需要咱们自己 new.new 对象的操作已经是被 Qt 自动生成了。如果你当前程序界面,界面内容是比较固定的,此时就会以图形化的方式来构造界面。但是如果你的程序界面,经常要动态变化~~ 此时就会以代码的方式来构造界面。而且这个按钮对象,已经作为 ui 对象里的一个成员变量了。为了保证其他函数中能够访问到这个变量,就需要把按钮对象。对于纯代码版本,按钮对象是咱们自己 new 的。这两种,都很主要,难分主次!

2025-04-02 16:43:12 227

原创 14使用按钮实现helloworld(1)

Qt 中的 connect 是 QObject 这个类提供的静态函数.这个函数的作用就是"连接信号 和 槽。qmake 在预处理.ui 文件的时候,就会根据这里的 objectName 生成对应的C++ 代码.TCP 三次握手.... (面试中, 网络部分最高频的面试题,没有之一!访问到 form file (ui 文件) 中创建的控件!这个属性的值要求是在界面中得是唯一的.(不能和别人重复)就可以根据这个名字来获取到对应的控件的变量了!和 TCP 的建立连接操作没有任何关系!也可以手动修改成别的。

2025-04-02 16:07:17 294

原创 13使用输入框实现helloworld

完成 Hello World 可以通过很多种控件来实现。单行编辑框.QLineEdit。使用纯代码的方式实现上述功能.多行编辑框QTextEdit。

2025-04-02 15:20:05 106

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除