- 博客(100)
- 资源 (1)
- 问答 (4)
- 收藏
- 关注
原创 MySQL数据库——表的CURD(结果查询)
案例:雇员信息表(oracle 9i的经典测试表)删除表中的重复记录,重复的数据只能有一份。返回查询到的数据的平均值,不是数字没有意义。返回查询到的数据的最大值,不是数字没有意义。返回查询到的数据的最小值,不是数字没有意义。返回查询到的数据的总和,不是数字没有意义。返回查询到的数据的数量。(在mysql中操作)
2024-08-19 15:54:12 381
原创 MySQL数据库——表的CURD(Delete)
truncate [table] table_name注意:这个操作慎用1.只能对整表操作,不能像DELETE一样针对部分数据操作;2.实际上MySQL不对数据操作,所以比DELETE更快,但是TRUNCATE在删除数据的时候,并不经过真正的事务,所以无法回滚3.会重置AUTO_INCREMENT项
2024-08-19 15:54:05 294
原创 MySQL数据库——表的CURD(Update)
原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间某个环节。一致性(Consistency):事务必须保证数据库从一个一致的状态转移到另一个一致的状态。隔离性(Isolation):并发执行的事务之间不会互相影响。持久性(Durability):一旦事务提交,它对数据库的改变就是永久性的即使系统发生故障也不会丢失。
2024-08-16 20:33:59 924
原创 MySQL数据库——表的CURD(Retrieve)
子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序。在日常开发中不建议使用全列查询,因为数据会很多。如果是option中的任意一个,返回。表示任意多个(包括0个)任意字符;大于,大于等于,小于,小于等于。DESC 降序 (从大到小)ASC 升序(从小到大)的结果是TRUE(1)
2024-08-16 20:33:43 354
原创 MySQL数据库——表的约束(二)
但是这个学生的其他信息诸如电话和社交账号,这些也都是唯一的,但是不是必须填写的,所以也需要确保在表中不会有两个人填写相同的电话(在现实情况中就是每个人都有自己专属的电话),类似的信息也有身份证等,这时候,需要确保该信息的唯一性,但是又不像主键一样是必须填写的,就需要用到唯一键了。在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。,得到一个新的不同的值。,数据不能重复,但是。
2024-08-15 10:14:12 712
原创 MySQL数据库——表的约束(一)
表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段,倒逼程序员,插入正确的数据。反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的!,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。:如果设置了,用户插入的时候,有具体的数据就用用户的,如果没有就用默认的。不冲突,而是相互补充的。
2024-08-14 14:58:55 470
原创 MySQL数据库——数据库的数据类型(二)
当您插入一个数值时,实际上是在设置对应于该数值的位。类型,它可以存储列中列出的一个或多个值(在这种情况下,是 '代码'、'羽毛球'、'乒乓球'、'足球'、'游泳' 中的一个或多个)。(即 00001 | 00010,结果是 00011),这表示 '代码' 和 '羽毛球' 都被选中了。所以,在你的数据表中,只有那些。该设定只是提供了若干个选项的值,最终一个单元格中,该设定只是提供了若干个选项的值,最终一个单元格中,类型的列在存储时会将选中的值转换为一个数字,字符串,L是可以存储的长度,单位为字符,
2024-08-13 20:22:20 870
原创 MySQL数据库——数据库的数据类型(一)
如果我们向mysql特定的类型中插入不合法的数据,MySQL一般都是直接拦截我们的操作,如果我们的数据成功插入到mysql中了,一定插入的时候是合法的。所以在mysql中,一般而言,数据类型本身也就是一种约束(约束使用者,保证数据插入的合法性),这样就能保证数据库中的数据是可预期的、完整的。但是在C/C++中,如果较大的数存入范围较小的数据类型中(如char中存入1234567),这种情况下一般不会报错,顶多会警告,这时候存入了数据,但是数据会被截断或发生了隐式类型转换。,显示为不同的数值。
2024-08-13 20:19:33 858
原创 MySQL数据库——数据库的基本操作
如果备份一个数据库时,没有带上-B参数,在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用。-- utf8_general_ci 不区分大小写。因为在配置mysql的时候配置了默认的存储引擎(-- utf8_bin 区分大小写。因为使用不同的存储引擎,所以。4. 同时备份多个数据库。5. 查看数据库连接情况。
2024-08-05 21:55:02 803
原创 MySQL数据库——数据库基础
各种系统在底层实现方面各有不同,但是MySQL基本上能保证在各个平台上的物理体系结构的一致性。存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等。MySQL是一个可移植的数据库,几乎能在当前所有的操系统上运行,如。(在我的本机上安装了两个不同版本的MySQL)左侧选项可以停止、暂停、重启动进行服务管理。:连接端口号,如果没有写默认是连接端口号。:连接到MySql服务器时使用的用户名。:连接地址,如果没有写默认是连接本地。MySQL的核心就是。
2024-08-04 00:17:23 512
原创 C++客户端Qt开发——多线程编程(二)
这种情况下,线程会很自然地使用锁的机制来阻塞其他线程,因为这只是线程的轮流使用,并且该线程等待某些特定条件,人们会认为需要等待条件的线程,在释放互斥锁或读写锁之后进入了睡眠状态,这样其他线程就可以继续运行。方法就可以将一个任务添加到线程池中,这个任务就可以被线程池内部的线程池处理掉了,使用线程池比自己创建线程的这种多种多线程方式更加简单和易于维护。给线程池添加任务, 任务是一个 QRunnable 类型的对象,如果线程池中没有空闲的线程了, 任务会放到任务队列中, 等待线程处理。得到线程池对象之后,调用。
2024-08-04 00:12:39 852
原创 C++客户端Qt开发——多线程编程(一)
当信号发出时,槽函数会被插入到接收对象所属的线程的事件队列中,等待下一次事件循环时执行。直接复制了上边示例的项目,所以这里的类名还是一致的,但是这种方法是从QObject中派生的,命名在这里用于区分代码就好。类似,但是发送信号的线程会被阻塞,直到槽函数执行完毕,这种连接类型适用于需要等待槽函数执行完毕再继续的场景,但。Qt提供的第二种线程的创建方式弥补了第一种方式的缺点,用起来更加灵活,但是这种方式写起来会相对复杂一些。代表一个在应用程序中可以独立控制的线程,也可以和进程中的其他线程共享数据。
2024-08-03 00:20:16 1198
原创 Qt项目——文本编辑器(Bug/疑问)
如果有需要学习该项目的人,觉得看文档较为困难,可以加我联系方式,本篇是针对我在做项目的时候遇到的bug和一些疑问的总结,综合前几部分看另外在github上我会进行一些后续bug的修复更新,如有其他bug可在github上查看。
2024-08-03 00:19:42 755
原创 Qt项目——文本编辑器(功能模块④)
文档打印操作,在.ui界面对printPreviewAction转到槽,选triggered信号,然后将功能封装为docPrintPreview将打印预览功能封装,实现该函数时需要添加头文件
2024-08-02 00:01:30 472
原创 Qt项目——文本编辑器(功能模块③)
文档内容的剪切、复制、粘贴,撤销(上一步)、重写(下一步)等操作,同上,在.ui界面对这些Action转到槽,选triggered信号,关于这几种功能,在Qt中有已实现的函数,直接调用即可文字的加粗、倾斜、下划线操作,同上,在.ui界面对这些Action转到槽,选triggered信号,关于这几种功能,是需要对选中的文字进行设置
2024-08-02 00:01:09 589
原创 Qt项目——文本编辑器(功能模块②)
在.ui文件的各个Action选项右击选择转到槽,选择triggered信号,调用对应的方法(均已封装好,可以直接调用)这里有新建、关闭、关闭所有、平铺、层叠、下一个、上一个
2024-08-01 00:48:45 571
原创 Qt项目——文本编辑器(功能模块①)
MDI(Multiple Document Interface,多文档界面)是一种允许用户同时打开多个文档窗口的界面模式。在这种模式下,每个文档窗口都可以独立操作,并且可以缩放、移动和关闭。在.ui添加MDI控件,然后创建ChileWnd类,父类选择QTextEdit在.ui界面对newAction转到槽,选triggered信号,我们将新建操作进行封装,命名为docNew,并在主窗口头文件声明接着在新建好的子窗口头文件中进行功能函数和全局变量的声明,实现子窗口需要的功能
2024-08-01 00:48:21 1192
原创 Qt项目——文本编辑器(菜单栏)
在创建项目文件的时候,选中创建.ui文件,项目类型为QMainwindown,在.ui界面添加菜单栏选项添加的时候会发现,无法输入中文,这是QTCreator一项不太合理的设计,我们需要事先在文本文件中写好所有需要添加的菜单项,然后逐一复制(复制过后记得按回车才能保存),这样就可以创建中文形式的菜单栏另外需要一并设置快捷键的,创建的时候需要添加取地址符号,例如:编辑(&E)
2024-07-31 00:48:20 406
原创 Qt项目——文本编辑器(需求设计)
Qt Creator 版本:4.11.0基于的 Qt 版本:5.14.0编译器:MSVC 2017(微软视觉工作室 2017)编译位数:32位编译日期:2019年12月10日 12:27:13(注意:这里的日期可能存在笔误,通常日期格式为月/日/年)源代码修订版本:017ed74400版权信息:2008-2019 The Qt Company Ltd(Qt 公司)法律声明:程序提供“按原样”(AS IS),不提供任何形式的保证,包括设计、适销性和特定用途的适用性保证。
2024-07-31 00:45:45 592
原创 C++客户端Qt开发——界面优化(美化登录界面)
用布局管理器管理元素:用户名LineEdit,密码LineEdit,记住密码ComboBox,登录Button。无法设置背景图片,套上一层。所有的属性设置都集中放在。
2024-07-30 00:37:22 290
原创 C++客户端Qt开发——界面优化(绘图)
因此,如果把绘图 API 放到构造函数中调用,那么一旦出现上述的情况,界面的绘制效果就无法确保符合预期了。width:所绘制矩形的宽度;Qt提供了画图相关的APL,可以允许我们在窗口上绘制任意的图形形状,来完成更复杂的界面设计。的时候其实就是把上述记录的事件再一条一条的执行一遍即可还原之前的游戏场景了。在绘制时,是有一个默认的画笔的。的子类,用来处理颜色深度为l的图像,即只能显示黑白两种颜色;这样的经典游戏,即使是一场60分钟的膀胱局,生成的。所谓的"控件",本质上也是通过画图的方式画上去的。
2024-07-30 00:37:10 672
原创 C++客户端Qt开发——界面优化(QSS)
除此之外,如果全局和指定控件分别设置两种不同的样式(例如pushbutton_2),那么这两种样式会叠加起来,都给该控件进行设置属性(层叠性)由于设置样式太灵活,有很多地方都能设置,就导致当某个控件样式不符合预期的时候,排查起来就比较麻烦。设置子控件的图片,像QSpinBox,QComboBox等可以使用这个属性来设置子控件的图片。设置子控件的图片,像QSpinBox,QComboBox等可以使用这个属性来设置子控件的图片。设置子控件宽度,对普通控件无效(普通控件使用geometry方法设定尺寸)
2024-07-29 00:13:07 959
原创 C++客户端Qt开发——系统相关(多媒体音频)
是一个静态成员函数,直接调用它不会创建新的对象,因此也不需要担心内存释放的问题。由于它是静态成员函数,它是由类本身调用的,而不是某个对象,因此不涉及对象的内存管理问题。智能指针可以自动管理对象的生命周期,当智能指针超出作用域时,它会自动删除所指向的对象。wav是一种无损格式,能够提供比其他格式更高质量的音频,wav文件的质量比较高,从而文件大小也相对会大一点。对象生命周期较长,而声音播放不频繁,可能会占用一些不必要的内存。对象,如果不释放这些对象,内存会不断增长,最终可能会耗尽内存。
2024-07-29 00:12:46 1016
原创 C++客户端Qt开发——系统相关(文件操作)
是Qt提供的一个用于获取文件和目录信息的类,如获取文件名、文件大小、文件修改日期等。类似于这样的功能,在C/C++标准库中本来都没有,所以想使用类似的功能往往要使用系统api,不过在C++17引入了模块。,简称I/O设备)的基础类,I/O设备就是能进行数据输入和输出的设备,例如文件是一种I/O设备,网络通信中的socket是I/O设备,串口、蓝牙等通信接口也是I/O设备,所以它们也是从。访问一个设备之前,需要使用open()函数打开该设备,而且必须指定正确的打开模式,在Qt中,文件读写的类为。
2024-07-28 00:06:24 641
原创 C++客户端Qt开发——系统相关(事件)
一些事件是在用户操作时发出,如键盘事件、鼠标事件等,另一些事件则是由系统本身自动发出,如定时器事件。事件本身是操作系统提供的机制.Qt也同样把操作系统事件机制进行了封装,拿到了Qt中,但是由于事件对应的代码编写起来不是很方便,Qt对于事件机制又进行了进一步的封装,就得到了信号槽。实际Qt开发程序过程中,绝大部分和用户之间进行的交互都是通过"信号槽”来完成的,有些特殊情况下,信号槽不一定能搞定(某个用户的动作行为,Qt没有提供对应的信号),此时就需要通过重写事件处理函数的形式,来手动处理事件的响应逻辑。
2024-07-28 00:06:08 1148
原创 C++客户端Qt开发——Qt窗口(对话框)
对话框是GUI程序中不可或缺的组成部分。一些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。QFiledialog(文件对话框)QColorDialog(颜色对话框)QFontDialog(字体对话框)QInputDialog(输入对话框)和QMessageBox(消息框)(1)用代码的方式创建创建好MainWindow的项目后,添加按钮并转到槽clicked,然后新建C++->class继承父类:QDialog。
2024-07-27 00:02:18 1303
原创 C++客户端Qt开发——Qt窗口(浮动窗口)
浮动窗口一般是位于核心部件的周围,可以有多个。在Qt中,浮动窗口也称之为铆接部件。浮动窗口是位于中心部件的周围。
2024-07-27 00:00:04 319
原创 C++客户端Qt开发——Qt窗口(状态栏)
状态栏是应用程序中输出简要信息的区域。一般位于主窗口的最底部,一个窗口中最多只能有一个状态栏。在Qt中,状态栏是通过。
2024-07-26 23:59:44 311
原创 C++客户端Qt开发——Qt窗口(工具栏)
如果一个QAction既是QMenu的子元素,又是QToolBar的子元素,释放的时候,是否会重复delete?表示工具栏对象,一个窗口可以有多个工具栏,也可以没有,工具栏往往也可以手动移动位置。在创建工具栏的同时指定其停靠的位置,指的是程序运行时工具栏默认所在的位置;设置停靠位置,指的是工具栏允许其所能停靠的位置。不会,qt的对象树机制处理好了这样的释放。设置工具栏的移动属性可以通过。工具栏允许停靠的区域由。
2024-07-24 13:19:52 464
原创 C++客户端Qt开发——Qt窗口(菜单栏)
Qt窗口是通过类来实现的。是一个为用户提供主窗口程序的类,继承自QWidget类,并且提供了一个预定义的布局。包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个浮动窗口(铆接部件)(dock widgets、一个状态栏(status bar)和一个中心部件(central widget),它是许多应用程序的基础,如文本编辑器,图片编辑器等。
2024-07-24 13:18:53 614
原创 C++客户端Qt开发——常用控件(布局管理器)
上述案例中,直接设置setRowStretch效果不明显,因为每个按钮的高度是固定的.需要把按钮的垂直方向的sizePolicy属性设置为。这种设定方式其实并不方便,尤其是界面如果内容比较多,不好计算,而且一个窗口大小往往是可以调整的,按照绝对定位的方式,也无法自适应窗口大小。此处也要注意,设置行和列的时候,如果设置的是一个很大的值,但是这个值和上一个值之间并没有其他的元素,那么并不会在中间腾出额外的空间。之前使用Qt在界面上创建的控件,都是通过"绝对定位"的方式来设定的。
2024-07-17 14:58:53 1263
原创 C++客户端Qt开发——常用控件(容器类控件)
注意新创建的label的父元素,是ui->tab和ui->tab_2.Qt中使用父子关系决定该控件"在哪里”分组框只是一个用来"美化界面"这样的组件,并不涉及到用户交互和业务逻辑.属于"锦上添花”在点击选项卡的标签条的时候触发.参数为被点击的选项卡编号。在双击选项卡的标签条的时候触发.参数为被点击的选项卡编号。在标签页发生切换时触发,参数为被点击的选项卡编号。在标签页关闭时触发.参数为被关闭的选项卡编号。当前选中的标签页的提示信息。当前选中的标签页的文本。当前选中的标签页的名字。当前选中的标签页的图标。
2024-07-17 14:58:29 308
原创 C++客户端Qt开发——常用控件(多元素控件)
表示一个表格控件,一个表格中包含若干行,每一行又包含若干列,表格中的每个单元格,是一个。设置顶层节点(顶层节点可以有多个),然后再给顶层节点添加子节点,从而构成树形结构.删除指定行的元素,返回QListWidgetltem*表示是哪个元素被删除了。使用QTreewidget表示一个树形控件.里面的每个元素,都是一个。删除指定的顶层节点.返回QTreeWidgetltem*表示被删除。选中不同元素时会触发.参数是当前选中的元素和之前选中的元素.选中不同元素时会触发.参数是当前选中元素的行数,
2024-07-16 09:02:00 971
原创 C++客户端Qt开发——常用控件(输入类控件)
本地时间则是基于不同的时区,对UTC时间做出了一些调整.比如咱们使用的北京时间,位于"东八区”,就需要在UTC时间基础上+8个小时的时差,之所以存在两套,是因为Qt诞生较早(1991年左右),此时C+还没有完成"标准化"的工作,C++标准库这样的概念自然也没有诞生,因此Qt就自己打造了一套库,实现了字符串,容器,文件操作,多线程,网络操作,定时器,正则表达式等内容.注意:这里的格式化符号的含义,不要记忆.不同语言/库的设定规则是存在差异的,一定是用的时候再去查。
2024-07-16 09:00:59 974
原创 C++客户端Qt开发——常用控件(显示类控件)
另起一个线程,在新线程中完成循环+sleep,这个代码是有错误的,对于GUI上内容的操作,必须在主线程中完成,像Widget构造函数,以及connect连接的slot函数,都是在主线程中调用的,而我们自己创建的线程则不是。如果想要跟随窗口大小改变,当用户拖拽修改窗口大小的时候,会触发resize事件,像这样的事件,是连续变化的,把窗口尺寸从A拖拽到B这个过程中,会触发一系列的事件。的,例如,要读取一个很大的文件,就先获取到文件的总大小,每读取一部分,计算出读取了多少数据,更新一次进度条的数值,
2024-07-15 20:06:30 1195
原创 C++客户端Qt开发——常用控件(按钮类控件)
继承自QAbstractButton,这个类是⼀个抽象类,是其他按钮的父类。如果设为false,则必须释放鼠标,再次按下鼠标时才能产生点击事件。是否已经被选中,checkable是checked的前提条件。用来实现"三态复选框",这个东西比较冷门,咱们课堂不做讨论.重复触发的延时时间,按住按钮多久以后开始重复触发。如果设为true,则会持续产生鼠标点击事件。是单选按钮,可以让我们在多个选项中选择一个。按钮是否会触发,当鼠标左键按住不放时。选中一个按钮之后是否会取消其他的选中。
2024-07-15 20:05:59 337 2
原创 C++客户端Qt开发——常用控件QWidget
先准备一个图片,把图导入到项目中(qrc管理)在代码中访问到这个图片,基于这个图片构造出光标对象并设置~~添加图片文件的时候,需要。
2024-07-14 09:45:43 1046
原创 C++客户端Qt开发——信号和槽
在Qt中,用户和控件的每次交互过程称为一个事件。比如"用户点击按钮”是一个事件,"用户关闭窗口”也是一个事件。每个事件都会发出一个信号,例如用户点击按钮会发出"按钮被点击"的信号,用户关闭窗口会发出"窗口被关闭"的信号。Qt中的所有控件都具有接收信号的能力一个控件还可以接收多个不同的信号。对于接收到的每个信号,控件都会做出相应的响应动作。例如,按钮所在的窗口接收到"按钮被点击"的信号后,会做出"关闭自己”的响应动作
2024-07-14 09:45:20 1042
原创 C++客户端Qt开发——QT初识
②中的代码创建,是在堆上new出来的一块空间,当把对象改成在栈上创建,此时就可以看到运行起来的程序无法显示出helloworld,此时label对象随着构造函数的结束,就销毁了,所以应该把它交给对象树进行管理。在QT Designer中创建一个控件的时候,此时会给这个控件分配一个objectName属性,这个属性的值,要求是在界面中是唯一的,不能和别人重复。Qt的对象树模型是一种递归的结构,其中一个对象可以拥有多个子对象,而每个子对象又可以拥有自己的子对象,以此类推。坐标体系:以左上角为原点(0,0),
2024-07-13 21:27:21 952 2
Qt实现文本编辑器源码
2024-08-02
Postman-测试开发
2024-08-02
关于cpp的移位运算符
2023-01-15
学习数据结构与算法只看书可以吗
2022-07-24
Python求各列表最大值的平均数
2022-06-30
有什么推荐的java自学资源,零基础开始,免费最好
2022-06-12
Python类的方法实现复数四则运算
2022-06-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人