- 博客(90)
- 资源 (16)
- 收藏
- 关注

原创 c++ 高低位基础
如int a=16777220,化为十六进制是0x01 00 00 04则04属于低字节,01属于高字节。a:如果内存中存放顺序如下(低字节存放高地址)即为大端模式。b:如果内存中存放顺序(低字节存放低地址)即为小端模式。三:整数内部存储(小端)
2022-10-24 17:37:41
838

原创 VS 远程进程调试简单步骤
Visual Studio远程进程调试简单步骤首先到vs2013的安装目录下,找到远程调试工具包,如下图所示,按操作下面的图一步一步找到工具包的位置、、然后是直接复制这个文件夹或者压缩打包,拷贝到其它需要远程调试的windows电脑上然后根据你要调试的程序,确定是多少位的选择相应的程序版本运行,如下图所示进入目录,启动下面红色箭头所指的程序,记住要用管理员权限启动,参考下图如下图所示,第一次运行需要做如下的简单配置,主要是开启远程调试的功能好了 这里远程调试环境.
2021-04-19 15:07:09
366

原创 c++ 程序异常退出 dump信息抓取及调试
VS项目设置 C\C++ -> 常规 -> 调试信息格式 : 程序数据库(/Zi) C\C++ -> 优化 -> 优化: 已禁用(/OD) 链接器 -> 调试 -> 生成调试信息:优化以便于调试(/DEBUG) (确保Release下生成PDB文件) 工具 -> 选项 -> 调试 -> 常规: 取消 要求源文件与原始版本完全匹配 Dump代码部分// dump.h#include <windows.h
2021-04-17 10:34:20
604
原创 QT学习教程(二十五)
在构造函数中,调用setBackGroundRole(QPalette::Dark),当对控件进行放大需要重新绘制时,提供给Qt 一个缺省的颜色填充新的区域,为了能够使用这个机制,还调用了 setAutoFillBackground(true)。缺省的设置是两个方向都是 QSizePolicy::Preferred,意思是控件的实际尺寸和它的 sizeHint一致,控件最小只能缩小到它的最小的 sizeHint,并能够无限放大。(通常,调用父控件的 show()函数就显示所有的子控件。确定控件的最大尺寸。
2025-06-10 08:41:57
525
原创 QT学习教程(二十四)
双缓冲技术是GUI 编程中常用的技术。我们可以把控件永久保存在一个图像中,随时准备下一次绘制事件的到来,一旦接到一个控件的绘制事件,就把图片拷贝到控件上。这里给出一些常用的中英文对照(不一定准确,我这样用的):Rubber band(橡皮筋线,或者橡皮线), pixmap(图像,双缓冲中用到的图像,有时也直呼pixmap),off-screen pixmap(离线图像)Plot(plot,这一节实现的就是一个绘制曲线的控件 Plotter,有时原文也叫plot,有点小名的意思,没有翻译,直接呼之)
2025-06-10 08:36:23
294
原创 QT学习教程(二十三)
这些问题可以用插件法解决。找一个 Qt自有的控件,如果它和我们新加的自定义控件有着相似的 API,那么只要在 Qt Designer 的对话框里面完成一些新控件的信息就一切大吉,新控件就可以在 Qt Designer 中使用了。函数includeFile()得到控件的头文件,这个头文件包含在 moc 产生的代码中函数group()返回的是控件所属的工具箱的名字。很多Qt 控件都可以包含其他控件,但是如果 isContainer()返回 false,Qt Designer 就不允许这个控件包含其他控件了。
2025-06-09 08:59:08
548
原创 QT学习教程(二十二)
例如一个纯红色的红,绿,蓝和alpha 四个分量分别为 255,0,0,和 255。然后我们检查当前的点是否在有效区域内,使用的函数是 QImage::rect()和QRect::contains(),判断 i 是否在 0 和iamge.width()-1 之间,和j 是否在 0 和image.height()-1 之间。在需要一个合适的刷子颜色画图时,正确的方法时使用当前 QWidget::palette()返回的调色板和一个特定的角色(role),如QPalette::foreground()。
2025-06-09 08:53:40
509
原创 QT学习教程(二十一)
我们设置默认的数值范围是 0 到 2 5 5(0X00 到 0XFF),在 QSpinBox 中默认的范围是 0 到99,在十六进制中,前者合理多了。它会产生三个可能的结果: Invalid(不合法),Intermediate(输入的文本是一个合理值的合理部分),Acceptable(文本是合理的)。最后介绍一个使用双缓冲的自定义控件,双缓冲是实现高速绘制图形的一种技术。自定义其他 Qt 控件也遵循一样的步骤,选择一个合理的Qt 控件,把它作为基类,然后重新实现一些虚函数改变它的行为以满足我们的需要。
2025-06-07 08:26:27
456
原创 QT学习教程(二十)
这个网格应该在表格的某一个地方,它的值如果依赖其他的网格,会触发更多的对 value()的调用 ,对所有依赖的网格都解析。否则这个表达式就是由一个算式组成的,它的值就是表达式的值。调用evalExpression()后,如果表达式解析成功,pos 的值应为我们附加的QChar::Null,否则失败,置cachedValue 为Invalid。也可以增加对因数的类型的定义,直接对它进行扩展处理表格预定义的函数,如sum(),avg(),另一个简单的扩展也可以把“+”好用字符串式的连接实现,这不需要更改代码。
2025-06-07 08:23:28
662
原创 QT学习教程(十九)
遍历所有的行和列,在每一个网格上调用 setDirty()给他们设置重新计算状态,然后 QTableWidget 调用每一个网格项的 text()函数重新在表格中更新网格显示值,这个值是重新计算过的。这个类用来存贮网格项的公式 ,重新实现了QTableWidgetItem::data()函数,Spreadsheet 间接调用了这个函数,在 QTableWidgetItem::text(),这个函数根据网格项的公式计算出显示文本。我们传递的比较对象不是一个函数,但是它也是可用的,很快我们就会看到这个实现。
2025-06-06 08:37:26
992
原创 QT学习教程(十八)
Edit|Select|All 菜单操作由QTableWidget 的父QTableItemView::selectAll()实现的。如果发现了一个匹配,清除当前选择,把匹配的网格做为当前网格,并把相应的窗口激活。首先得到当前的选择项(如果没有明确选择,返回当前的网格),然后把选择项的公式按顺序记录下来。槽函数cut()相应Edit|Cut 菜单,这里调用了两个函数,因为剪切的操作和拷贝然后删除是等价的。粘贴文本时,再一次调用 QString::split()把一行文本分裂为每一列文本的组合。
2025-06-06 08:32:40
727
原创 QT学习教程(十七)
在不同的平台上,基本的 C++类型如 short,char,int,long,long long 会有不同的字长。最好把它们转换为 qint8,quint8,qint16, quint16,qint32,quint32,qint64,quint64,这些类型能确保字长是不随平台改变的。Spreadsheet 程序开头部分是一个 32 位的标识数字(MagciNumber,在spreadsheet.h 中定义的,一个二进制的随机数),这个数字后面是一系列的数据块,友一个行号,列号和公式组成。
2025-06-05 08:46:01
731
原创 QT学习教程(十六)
最后把光标移动到 A1。它和 QTableWidget::item()是一样的,只是它返回的是Cell 类型的指针, QTableWidget::item()返回的是QTableWidgetItem 类型的指针。例如,公式" hello"和字符"hello"是一样的,如果用户输入了"hello",网格的文本就显示为 hello。对于那些更为复杂的数据处理,如大量的数据,复杂的数据项,数据库数据和多种数据显示方式,Qt 提供了一套 model/view 类将数据和显示分离出来,第十章介绍了这个特性。
2025-06-05 08:43:14
666
原创 QT学习教程(十五)
在窗口没有显示之前,QSplashScreen 显示一个图片,他还可以在图片上显示文字信息提示用户当前程序初始化的进度。一般情况下,启动画面代码在 main()函数中,加在调用 QApplication::exec()之前。许多应用程序在启动时显示一个画面。在程序启动很慢时,程序员用这种方法可以让启动时间感觉不那么长,还有用这个画面满足市场的一些要求。下面的一个程序的main()函数使用QSplashScreen 显示一个启动画面,同时显示加载的模块信息和网络连接情况。
2025-06-04 08:43:00
163
原创 QT学习教程(十四)
因为只要关闭一个窗口, MainWindow::closeEvent()就会调用,这样我们就不用担心有些文档没有存盘。上面的代码用到了 Qt 的 foreach(这将在第 11 章介绍)遍历所有程序窗口,类型为 MainWindow 的窗口全部调用updateRecentFilesActions()。如果创建了多个窗口,那么每一个窗口都已个最近打开的文档和自己的设置。使用以上的 main()函数,Spreadsheet 程序提供一个主窗口,一次只能处理一个文档。这样 Qt 就在窗口关闭的同时销毁它。
2025-06-04 08:40:54
566
原创 QT学习教程(十三)
同样在 closeEvent()中我们调用 writeSettings()保存当前应用程序的设置。对应的值可是bool,double,QString,QStringList,或者是其他 QVariant 支持的数据类型 ,也包括注册过的用户自定义类型。在writeSettring()中保存程序主窗口的几何信息(位置和大小),最近打开的文件列表,是否显示网格和是否自动计算属性。MainWindow 中要保存的设置,在readSettings()和writeSettings()只是一种可行方法之一。
2025-06-03 08:56:26
359
原创 QT学习教程(十二)
当然我们也可以在MainWindow 的构造函数中创建,但是在需要的时候再创建可以加快程序的启动时间,而且,如果在程序运行期间没有调用这个对话框,还可以节约内存。但是如果调用时,Find 对话框是可见的,show()就不做任何事情,调用activateWindow()就有必要了。我们也可以象创建 Find,Go-to-Cell 对话框一样实现一个用户子定义的对话框来显示程序的有关信息,但是由于大多 About 对话框的样式都是一样的,所以Qt 给出了一个简单的解决方案。现在我们看sort 对话框。
2025-06-03 08:53:44
1101
原创 QT学习教程(十一)
setCurrentFile()也是一个私有函数,它更新窗口标题,重新设置 curFile 变量,更新最近打开的文件列表,为用户开始编辑没有名字的新文档做好准备。然后使用 QFileDialog::getOpenFileName(),这个函数弹出一个对话框,让用户选择一个文件的名字,如果用户选择了一个文件,那么函数返回文件的名字,如果用户点击了 Cancel 按钮,则返回一个空字符串。如果文件已经有了名字,或者是在磁盘上打开的,或者已经保存过,函数直接调用saveFile(),文件名字不变。
2025-05-30 09:17:03
749
原创 QT学习教程(十)
格子的位置占用的控件较小,当窗口的大小改变时,其他多余的空间由formulaLabel 占据,这是因为我们在代码中statusBar()-一个控件的理想大小是控件自己根据它显示的内容决定的,当显示内容改变时,这个大小也会改变。为了避免频繁改变 locationLabel 的大小,我们设置它的最小值为它可能显示的最大的文本(“W199”),对齐方式为水平居中对齐。在通常情况下,状态条提示两条信息:当前的格子的位置,和当前格子的公式。的托放因数为默认的 0,这表明它的大小是固定的。
2025-05-30 09:08:31
390
原创 QT学习教程(九)
以第一个action 为例:这个action 为New,有一个加速键(N),一个父对象(主窗口),一个图标(new.jpg),一个快捷键(Ctrl+N),还有一个提示信息。Open,Save,SaveAs 这些行为和New 行为相似,所以略去这个部分说明 recentFileActions的实现。很多GUI 程序都有菜单,上下文菜单,工具条等。ShowGrid 是一个可选取的行为,菜单的旁边有一个选择的记号。我们首先新建了File 菜单,给它添加了New,Open,Save,SaveAs 行为。
2025-05-29 08:53:14
717
原创 QT学习教程(八)
在包含文件中由<QtGUI>,这包含了我们在这个类中使用的很多 Qt 类。其他是第二章中定义的头文件,这里也使用了。然后我们调用 createActions(),createMenus(),createContext-Menu(), createToolBars()和createStatusBar()创建主窗口的其他部分。使用这个方案时,需要创建一个资源文件,并在.pro 文件中添加这个资源文件的有关信息。这里我们使用 Qt 提供的资源管理方案,因为它能够发在运行时方便的加载图片文件,并支持以上文件格式。
2025-05-29 08:42:37
935
原创 QT学习教程(七)
它们可以用来创建“细客户”的程序,只有两个内建的对话框,其他的对话框都是按照不同需要创建的。findChild<T>()是模板成员函数,得到类型为T 的给定名字的子控件的指针。Qt 还提供了多种普通的对话框,可以方便的选择颜色,字体,文件,打印文档等。Qt 还提供只显示信息的控件,QLabel 是用的最多的,它可以用来显示文本,显示带有 html 格式的文本,还可以显示图片。这些控件和对话框提供了很多方便的函数,大部分特殊的要求可以通过设置控件属性或者通过信号和槽连接完成。提供的控件和对话框类(
2025-05-28 09:07:43
643
原创 QT学习教程(六)
创建一个sort 目录,保存对话框文件到sort 目录的sortdialog.ui,使用多继承的方式使用这个对话框。设置按钮的文本属为“&More”,它的checkable 属性为“true”,设置Ok 按钮的default 属性为true。6、设置组合框的 title 属性为“&Primary Key”,第一个标签的text 属性为“Column:”,第二个标签的text 属性为“Order:”。3、创建一个组合框,两个标签,两个下拉组合框和一个水平空白,先把它们放在对话框的任何地方。
2025-05-28 09:05:01
779
原创 QT学习教程(五)
在QRegExpValidator 的构造函数中,第二个参数为 this,把当前类作为它的父控件,这样就可以不用删除它,父控件析构时可以被自动删除。(需要记住的是 Qt 只是删除有父的对象,父对象还是需要手动删除的,还有就是那些用new 申请的没有指定父的内存,一般情况下,在对话框里的子控件,许可器和布局管理器由Qt 自己管理,其他还要程序员小心删除)对于控件来讲,父对象还有一个意义:子控件在父对象的显示区域内显示。当 Qt Designer 启动后,它会列出一个控件模板的列表,选择一个模板 ,进入设计。
2025-05-27 16:58:16
704
原创 QT学习教程(四)
在QRegExpValidator 的构造函数中,第二个参数为 this,把当前类作为它的父控件,这样就可以不用删除它,父控件析构时可以被自动删除。(需要记住的是 Qt 只是删除有父的对象,父对象还是需要手动删除的,还有就是那些用new 申请的没有指定父的内存,一般情况下,在对话框里的子控件,许可器和布局管理器由Qt 自己管理,其他还要程序员小心删除)Qt 的父子机制在QObject 中实现的。当我们创建一个带有父的对象(如一个子控件,一个许可器,布局管理器等)时,父对象把子对象放到自己的子对象列表中。
2025-05-27 08:25:34
874
原创 QT学习教程(三)
它们可以是虚函数(virtual),也可被重载(overload),可以是公有的(public),保护的( protective),也可是私有的(private),它们可以象任何c++成员函数一样被调用,可以传递任何类型的参数。信号和槽函数必须有着相同的参数类型,这样信号和槽函数才能成功连接: connect(ftp, SIGNAL(rawCommandReply(int, const QString &)),this, SLOT(processReply(int, const QString &)));
2025-05-27 08:20:28
647
原创 QT学习教程(二)
第 13 行,signal 声明了这个对话框发出的两个信号,如果选择向前查找,那么对话框就发出 findPrevious()信号,否则,发出findNext()信号。为了实现这两个函数,需要用到对话框的其他控件的信息,所以保存了一些控件的指针。对于私有成员变量,我们只是使用了它们的指针,没有对它们进行存取操作,编译器不需要知道它们的详细定义,所以只使用了这些类的前向声明。不同的编译器给出的提示信息不同,有的会非常晦涩。很多程序都是由一个主窗口,在这个主窗口中包含一个菜单条,多个工具条,和足够多的对话框。
2025-05-26 08:45:00
964
原创 QT学习教程(一)
第 18 行将 spinBox 的值设置为 35,这时 spinBox 发出 valueChanged(int)信号,int 的参数值为 35,这个参数传递给slider 的setValue(int)函数,将slider 的值也设置为 35。11 }当有所动作或者状态改变,qt 的控件会发出消息(signal),例如,当点击按钮时,按钮会发送clicked()消息,这个消息可以连接到一个函数上(这个函数在这里成为 slot)。差不多所有的程序教材都从Hello 开始,下面就是这个程序的 qt 版本。
2025-05-26 08:41:55
508
原创 QTableWidget和 QTableView翻页效果(准确计算Scroll,然后使用setSliderPosition函数)
以QTableView举例,QTableWidget使用相同。
2025-05-23 17:11:39
114
原创 Ubuntu16.04 Qt的安装与卸载
找到Qt的安装目录,我的默认目录是(如果不记得路径,可以再运行.run去看默认路径)2.去Qt官网下载最新版本的.run安装文件。针对上述两种安装方法,分别有不同的卸载方法。运行MaintenanceTool。2..run文件安装的卸载。1.直接在命令行安装。1.命令行安装的卸载。
2025-05-23 17:09:19
439
原创 查看 Linux 系统的版本信息
适用于查看详细的 Linux 发行版信息。:显示更多的发行版相关信息。uname -a:查看内核版本和系统架构。:查看系统的基本信息。
2025-01-14 11:09:21
707
原创 ffmpeg 编译遇到的坑
makeinfo: error parsing ./doc/t2h.pm: Undefined subroutine &Texinfo::Config::set_from_init_file called at ./doc/t2h.pm line 24.编译选项添加:--disable-htmlpages
2025-01-10 14:28:37
465
原创 Qt 软键盘设计
最近有客户用的电脑是触屏的,所以不用键盘与鼠标,系统的键盘不好看,所以自己设计一个键盘显示,先看下效果图;设计思路,构建一个软键盘设计界面并重写输入框,然后做界面提升,直接上代码。
2024-11-09 15:14:26
470
原创 windows中多ping网络ICMP
之前没搞过ICMP,第一次弄,遇到好多坑,其中在接收ICMP消息时无法指定ip这个坑困扰了好久,最后在网上找到一种解决方法;其中我获取ip状态直接扔到线程池里面处理的。
2024-09-11 13:34:38
370
原创 TensorFlow在windows环境搭建
(1)在系统目录C:\Users\用户\AppData\Roaming新建pip文件夹;(2)在pip文件夹下新建pip.3:安装 tensorflow。1:打开 Anaconda。
2024-09-04 14:00:23
352
【MATLAB编程】常用命令汇总:涵盖会话管理、系统操作、输入输出、数组处理及绘图功能
2025-05-27
【MATLAB编程基础】MATLAB基本语法与操作指南:命令执行、运算符及变量管理入门教程
2025-05-27
【MATLAB编程】变量、向量与矩阵操作基础:数据分配及格式控制详解
2025-05-27
【MATLAB编程】变量、向量与矩阵基础操作:数据定义及格式控制详解
2025-05-26
【MATLAB编程】常用命令汇总:数值计算与数据可视化交互式程序操作指南
2025-05-26
【MATLAB环境设置】本地安装与激活流程:桌面布局及主要工作窗口介绍MATLAB的本地
2025-05-26
操作系统Ubuntu Docker安装指南:Docker Engine-Community多版本部署与卸载方法详解
2025-05-23
容器技术Docker教程:基于Go语言的开源容器引擎及其应用场景和优势介绍
2025-05-23
容器技术Docker架构详解:组件功能与工作流程解析及容器管理应用
2025-05-23
容器技术Docker快速入门与基础操作指南:从安装到项目部署全流程解析
2025-05-22
容器技术Docker详细教程与应用示例:涵盖基本概念、安装、常用命令及SSH远程登录配置
2025-05-22
容器技术Docker容器引擎教程:从入门到实践的开发者与运维指南按照您的要求生成
2025-05-22
【Python编程】解决Python中文编码问题:确保中文字符正确显示的方法与设置
2025-05-21
编程语言Python环境搭建与配置:跨平台开发环境的安装及运行指南Python作为一种跨平台
2025-05-21
【Python编程】基础语法入门:涵盖交互式与脚本编程、语句结构及代码规范
2025-05-21
【数据库管理】MySQL命令大全:涵盖数据库与数据表操作及事务管理的常用指令集
2025-05-20
【数据库管理】MySQL数据导入方法详解:命令行工具与LOAD DATA INFILE的应用MySQL数据库中几种
2025-05-20
【数据库安全】MySQL中SQL注入攻击原理与防御措施:提升Web应用安全性设计在MySQL环境下SQL
2025-05-20
【数据库管理】MySQL多种数据导入方法详解:命令行工具与语法选项综述
2025-05-20
【数据库管理】MySQL数据导出技术详解:SELECT...INTO OUTFILE与mysqldump命令使用指南及实例说明
2025-05-20
XML技术基于W3C规范的XML验证器设计:确保XML文档语法正确与DTD合规性检查系统
2025-06-05
XML技术基于DTD和Schema的XML文档验证与结构定义:确保形式良好与合法的XML文档创建
2025-06-05
XML技术解析XML属性与元素的应用规则:属性用于元数据,元素用于数据内容
2025-06-05
【Linux系统管理】常用命令汇总:文件操作、权限管理、系统监控与网络工具详解
2025-06-04
XML技术解析XML文件查看与显示:浏览器中XML文件的展示方式及调试方法
2025-06-04
XML技术基于DTD和Schema的XML文档验证与结构定义:确保文档形式良好与合法性的方法
2025-06-04
XML技术解析XML属性与元素的区别及应用场景:探讨属性使用规范与最佳实践
2025-06-04
【Web自动化测试】Selenium教程:浏览器操作自动化与Web应用测试入门指南
2025-05-29
【软件测试与自动化】Selenium安装配置及Python环境下Web自动化测试基础操作指南: -
2025-05-29
【自动化测试】Selenium WebDriver浏览器操作详解:启动、页面导航与窗口管理方法介绍
2025-05-29
【Python编程】break语句详解:循环控制与终止条件的应用实例
2025-05-28
【Python编程】条件语句详解:if-elif-else结构及多条件判断在程序控制中的应用
2025-05-28
【Web开发技术】XML在Web开发中的应用:简化数据存储、共享与传输及推动新互联网语言创建
2025-06-03
【XML技术解析】基于树结构的XML文档组成与元素关系详解:从声明到根元素及其子元素的构建和应用
2025-06-03
信息技术XML基础知识详解:可扩展标记语言的功能与用途介绍提供的标题严格按照您的
2025-06-03
FPGA技术菜鸟学FPGA:内部结构解析、HDL语言理解及应用方向概述
2025-05-30
人工智能AI新手入门教程:涵盖基本概念、学习路径、资源推荐及实践项目指导
2025-05-30
FPGA开发FPGA入门教程:数字电路设计与Verilog编程基础及应用场景介绍
2025-05-30
【Python编程基础】详解Python循环语句及其控制结构:for循环、while循环与循环控制语句的应用
2025-05-28
编程语言Python运算符详解:涵盖算术、比较、赋值、逻辑、位运算符及优先级规则介绍
2025-05-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人