- 博客(296)
- 收藏
- 关注
原创 C++编译error LNK2019: unresolved external “XX“
链接错误:Linker Tools Error LNK2019C++项目编译过程中常常常常出现 error LNK2019: unresolved external "XX" 的错误提示,主要原因在于链接的过程中,在当前引用的库中不能找到对应引用变量或函数的定义。此时需要将定义该引用变量的库添加到对应的项目中。主要有两种方式来解决该问题:如需要手动添加 PowrProf.lib 库,操作如下:使用 #pragma comment ,如: #pragma comment (lib, "PowrPro
2021-08-25 15:02:43
1634
原创 系统休眠、睡眠状态
操作系统支持666中不同的电池状态,分别如下一、正常工作状态S0:此时系统处于完全启动且可操作的工作状态,即称为工作状态二、睡眠/休眠/关机状态S1:睡眠(Sleep),能耗小于S0,处理器时钟关闭,总线时钟停止。硬件延迟一般小于2秒S2:睡眠(Sleep),CPU context 和系统闪存内容丢失,S3:睡眠(Sleep)S4:休眠(Hibernate),唤醒需要的时间最长。S5:彻底关机MS:待机三、总结从S1,S2,S3,S4,S5中任何一种状态到 S0 称为唤醒
2021-08-19 16:15:43
2630
原创 WPF中图片显示
一、显示图片的相关类1、Image 类WPF中主要通过Image类来进行显示图片。可以通过XAML标记语言或者C#来进行设置。设置图片的尺寸时,一般只设置Image类的Width或Height中的一个,若同时设置这两个属性,则图片可能会发生变形扭曲。在加载图像内容之前,控件的ActualWidth和ActualHeight 为零,因为图像内容用于确定控件的最终大小和位置2、BitmapImage类BitmapImage主要用于支持XAML语言,并为位图加载时添加BitmapSource未定
2021-04-25 17:12:46
11666
原创 ItemsControl
一、ItemsControl 简介ItemsControl 是用来表示一些条目集合的控件,它的成员是一些其它控件的集合。其继承关系如下:其常用的派生控件为:ListBox、ListView、ComboBox,为ItemsControl的具体实现。ItemsControl的成员条目可以为不同的类型,如自定义的类型等。常常用于派生的ListBox、ListView、ComboBox 等控件的子条目中。二、ItemsControl 控件显示数据1、设置自定义数据类型 :MyTask //
2021-04-19 15:39:35
1778
原创 Triggers — 触发响应
一、Triggers 触发响应Triggers 让控件对指定的设置具有响应,常用于如下两个对象类型,都是用于控件的样式设置:Style:设置控件的样式ControlTemplate:设置控件的模板(可将其设置在Style内部)Triggers 可以作为Style和ControlTemplate的一个属性来进行设置,该属性的类型为TriggerCollection,它是TriggerBase的一个集合,。...
2021-04-19 11:21:46
1760
原创 MEF插件式开发
一、MEF 简介1、 Managed Extensibility Framework简称MEF,是WPF中的一种插件式开发的框架。其开发程序的主要优点如下:易于将复杂程序进行拆分成不同的功能模块,然后进行多团队的协作。将各个功能编译成dll的形式提供给主程序,由主程序进行统一加载。便于程序的后期扩展,在后期需要添加新功能时,只需要提供对应的dll即可,主程序无需进行大的改动。不同模块间的功能相对独立,降低程序的耦合性,使程序易于维护。2、MEF 的使用需要引用System.ComponentM
2021-04-12 17:31:00
2769
原创 Lambda 表达式
一、基本简介1、 Lambda表达式主要用来创建匿名函数,使用=>来将参数和函数体分开。用来简化一些简单函数的使用,再结合委托即可以使C#代码更加简洁。2、 Lambda表达式主要有两种形式,分别为:表达式为主体的,表达式Lambda,形如: (param) => expression语句块为主体的,语句Lambda,形如:(param) => { expression1; expression2; .... }3、表达式Lambda的主体只能为一个表达式,它会返回表达式的结
2021-04-09 16:27:03
485
原创 同一主机下GitBash生成的多个ssh配置问题
一、 问题工作中常常需要在一台电脑上使用多个代码托管平台,此时需要将针对不同平台生成的多个ssh私匙进行配置,否则会出现后面新生成的SSH私匙无法被使用,或覆盖之前生成的私匙等问题。在此以Windows操作平台,及 github 和 gitee代码托管平台为例进行测试。二、 方案 按照GitBash的安装、配置的方式来分别生成github和gitee平台对应的公匙和私匙。主要流程如下所示:1、首先设置姓名,邮箱,以分辨后期是谁提交改动代码git config --global user
2021-03-25 21:44:00
333
原创 委托 delegate
一、delegate 基础1、基本简介委托是一种类型,该类型可以赋值一个函数的引用。即,委托是把一个函数当作参数来进行传递。其作用类似于C++中的函数指针,是一种函数指针的升级版,类似于自己不做,委托给别人来做的情况。它是和类(class)具有同等地位的,所以其声明一般是位于命名空间namespace下、且位于类外部。(委托也可以声明在类的内部,此时其相当于类的嵌套类型。如同在一个类的内部,声明另一个类一样)委托和类的用法相同,都是需要先声明,再实例化,只是实例化之后仍然叫委托。委托的声明和函数
2021-01-07 17:31:42
696
原创 TortoiseGit提示No supported authentication methods available错误
一、问题在使用TortoiseGit与远程仓库进行同步代码的时候提示如下错误,即:没有支持认证的方法可用。而GitBash却可以正常使用,不受影响。通过调查,发现应该是TortoiseGit远程仓库的公匙无法和本地的密匙进行匹配认证造成的(主要是TortoiseGit缺少本地密匙)。由于TortoiseGit的默认网络SSH client是TortoiseGitPlink.exe,如下图所示。因此主要有两种方式来解决该问题:不修改TortoiseGit的默认网络SSH client,此时需要为To
2021-01-06 11:35:57
22367
10
原创 C#中事件
一、事件基础1、事件简介事件常用于对某一消息作出的反应。当某一事件被触发之后,就会对其做出对应的响应。连接消息和反馈动作的符号为+=,符号左侧表示发出的消息,右侧表示对消息做出的响应函数2、事件提示及查看在输入对象加点号后,VS会出现智能提示,其分别代表:小扳手:表示属性立方体:表示函数或方法闪电:表示事件 二、常见事件示例1、定时器事件Timer要包含对应的命名空间:using System.Timers;指定时间间隔,然后每到指定的间隔就响应一次,代码如下:
2021-01-04 16:43:35
7866
2
原创 C#中的数据类型— 04
一、值类型和引用类型C#中的数据类型主要分为值类型和引用类型这两种,其中指针类型只是在unsafe的上下文中才会出现。1、值类型变量值类型的变量总体有666种,分别为:整型、浮点型、字符型(char)、布尔型(bool)、枚举型(enum)、结构体型(struct)等。其中整型可以细分为888种,按表示数值的范围由小到大依次为:byte,sbyte,short,ushort,int,uint,long,ulong。其中浮点型可以细分为333种,按表示数值的范围由小到大依次为:float,doub
2020-12-30 10:04:06
501
原创 C#基础— 01
一、C#的入口函数为Main函数在C#程序中,所有的函数都属于一个类,没有全局函数和全局变量之说(可以在类内部通过静态成员来模拟C++中的全局变量的效果)。入口函数Main位于类或结构体中,必须要用关键字static来修饰,表示静态成员函数,且不能为公有的。因为静态成员函数属于整个类,而不属于类的某个对象。所以它可以在类初始化的时候就加载,而不必在对象实例化时才加载。(若Main函数为非静态的,则它必须要在对象实例化之后才能加载,而Main函数作为整个程序的入口,在对象未实例化之前又不能执行,整个程序
2020-12-29 17:11:31
1886
原创 WPF基本文件结构
一、WPF程序结构及内容分析1、创建WPF程序后,自动生成2对前端文件和后台代码App.xaml:App类对应的前端文件App.xaml.cs:App类对应的后台代码MainWindow.xaml:MainWindow类对应的前端文件,常用于UI编辑。MainWindow.xaml.cs:MainWindow类对应的后台代码,常用于UI所对应的功能实现,为后台逻辑代码。2、基本代码内容说明(1) App.xaml文件详解,内容如下该文件对应App类的前端文件,首先被加载x:Cla
2020-12-28 18:03:39
1029
原创 Qt创建程序界面中文乱码
一、程序界面中文乱码方案一:QStringLiteral("")包含中文字体当在程序中设置文本内容为中文时,会出现乱码的情况。ui.label->setText("时间单位");修改方式为:将中文字体用QStringLiteral("中文内容")包起来ui.label->setText(QStringLiteral("时间单位"));方案二:通过Qt Designer中直接设置控件的文本内容...
2020-12-23 09:26:48
708
原创 TortoiseGit 的配置和使用
一、简介1、TortoiseGit与git的关系TortoiseGit是基于git的可视化UI代码管理工具,其作用是相当于给git加了一个壳,这意味着TortoiseGit的使用首先必须要安装git才可以。在使用TortoiseGit时,其本质是将鼠标点击操作转换成对应的git命令行,然后调用git来进行对应的操作。GitBash是git对应的命令行窗口,它主要是通过命令的形式来对代码进行管理。TortoiseGit是通过窗口交互界面来对代码进行管理,直观清晰,方便;GitBash则是通过命令行的
2020-12-22 17:12:18
1325
原创 Qt中的多线程QThread
一、Qt多线程基础1、应用场景多任务的情况下需要开多个线程来分别进行处理。当一个UI界面有过于复杂耗时的计算要处理时,就不应该将这个耗时的计算和UI显示放在同一个线程下面。因为这样会导致UI卡死,或者程序不能响应的情况发生,此时应该重新开一个线程来处理这个复杂的计算。(如在计时器显示数字的线程中来处理一个复杂耗时的循环时,会导致整个UI停止响应,代码示例如下)#include "Pr06_QThread.h"Pr06_QThread::Pr06_QThread(QWidget *parent
2020-12-18 18:03:52
541
原创 Qt 自定义事件的发送与处理
一、postEvent方式发送处理自定义事件1、基本流程(1)、自定义事件类型Qt 中有时需要用到自定义的事件,此时需要先自定义一个事件对应的枚举类型QEvent::Type。Qt允许的自定义事件取值范围在 QEvent::User 与QEvent::MaxUser之间,即值在:1000 ~ 65535之间(包含两端值)。自定义事件的取值可以用 QEvent::User来加一个数字表示,最后必须要将其转换成QEvent::Type类型的。如自定义一个值为 1001的事件,可以使用如下方式: #d
2020-12-18 10:22:45
2785
原创 在QLabel等控件上绘图
由于无法直接在QLabel上进行绘图,所以需要通过几种其它的方式来进行处理绘图情况一、主函数中通过自定义控件绘图1、通过自定义控件触发信号,然后在主程序的槽函数中实现绘图首先自定义控件所对应的类MyLabel,该类继承自类QLabel。在该类中自定义用于触发绘图的信号StartPaint,并在该类中重写 paintEvent()函数。在paintEvent()函数中来触发绘图的信号 emit StartPaint();然后在主程序中定义对应的槽函数PaintOnQLabel,用于接收到触发绘图
2020-12-16 18:05:18
3727
1
原创 QPaintEvent 与 画家QPainter
一、QPaintEvent 绘图事件1、paintEvent 函数该绘图函数为虚函数,一般要在子类中去重新实现,来接受绘图事件。通过QPainter来绘图时,一般必须要在paintEvent 函数中来进行。在该函数中重新实现所有的绘图操作,程序在初始化之后会自动调用该绘图事件函数来进行绘图。2、绘图函数的调用绘图函数paintEvent 的首次调用是在所有的UI都初始化之后进行的。当程序的UI发生变化时,如控件大小位置变化、控件由隐藏到显示变化时,程序会调用paintEvent函数当调用
2020-12-16 15:38:13
3994
原创 Box Model与控件样式
一、Box Model样式1、当使用style sheets的时候,所有的控件都被当做是有4个同心矩形组成的方框模型。即:margin rectangle :最外层的边框矩形border rectangle :边界矩形padding rectangle :填充边界矩形content rectangle :显示内容的矩形2、 margin、border-width、padding默认值都是 0,所以默认情况下,这四个矩形是重叠的。3、background-color、background-
2020-12-14 15:12:41
260
原创 Qt在控件中只显示图片指定大小的部分
一、显示图片指定大小的部分有些控件,如QLabel、QWidget中需要只显示图片的一部分内容。此时有两种方式:一种方法是将需要的图片用工具进行裁剪之后再进行显示,但是该方法会让有透明度的图片在编辑裁剪之后丢失透明度,且会修改原图片,因此不是很适用。另一种更好的方式是只显示原图片指定大小的内容,而不会改变原图片的尺寸等内容。具体方式是:根据需要只取其中一个指定大小的矩形区域。参数为矩形区域到各边的距离,顺序是:上、右、下、左1、在QLabel和QWidget控件中显示图片指定部分内容UI布
2020-12-11 17:30:22
3878
1
原创 Qt Style Sheets设定控件的样式
一、代码作用的范围1、如带有6个Button控件和一个widget控件的Ui2、在main函数中对整个应用的Button控件进行设定格式作用范围是整个应用程序的Button控件int main(int argc, char *argv[]){ QApplication a(argc, argv); Qt_Practice04 w; // w为整个应用的程序 w.setStyleSheet("QPushButton {background-color:rgba
2020-12-10 17:57:37
2855
原创 Qt中以指定数量字符占位显示
一、QString以占位符来进行特定的字符串展示1、 变量为数值类型:此时有四个参数arg(long a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char( ' ' )) const第一个参数 a:为数值变量第二个参数 fieldWidth:为总的字宽,不足的话就以后面的指定字符来进行前置填充第三个参数 base:为数值的基数,即在此为10进制数第四个参数 fillChar:为填充空缺位置所用的字符2、变量为字
2020-12-09 17:30:13
3893
原创 QStackedWidget 控件
一、简介1、QStackedWidget 控件相当于一个容器,提供一个空间来存放一系列的控件,并且每次只能有一个控件是可见的,即被设置为当前的控件。2、常用接口函数:addWidget:向容器中添加控件setCurrentWidget:设置当前显示的控件currentWidget:返回当前的控件removeWidget:删除指定控件count:容器中控件的个数insertWidget:在指定位置上插入指定控件3、代码示例/**** .h头文件 ****/QStackedWidget
2020-12-08 18:07:44
8142
原创 Qt属性动画仿真QPropertyAnimation的使用
一、QPropertyAnimation的使用1、QPropertyAnimation是用于Qt中动画仿真的类如让一个矩形进行运动的头文件.h#pragma once#include <QtWidgets/QWidget>#include "ui_QtTimeSet.h"#include <QLabel>#include<QPropertyAnimation>class QtTimeSet : public QWidget{ Q_OBJECT
2020-11-10 16:32:32
8813
原创 Qt-事件处理
一、QWidget的事件分发首先QWidget产生的事件会发送给event(),然后event()根据事件的类型不同来进行分发,常见的事件类型Qt已经定义了对应的事件处理函数,如鼠标事件、键盘事件等为最常用的。其中event()事件的返回值为bool类型,如果它对接受的事件进行了处理,不需要再继续往下传了,就返回true,否则就返回到对应的父控件中继续进行处理。注意,必须要将未处理的事件返回给父控件进行处理。1、常用的鼠标事件enterEvent(QEvent *event)leaveEvent
2020-11-05 18:09:55
641
原创 Qt中坐标系
一、鼠标事件与坐标1、触发鼠标的对应事件时,鼠标的坐标点击鼠标后所获取的坐标是其相对坐标,即点击的位置相对于其直接父控件的坐标值,而非相对于主窗口或屏幕的坐标// MyLabel为自定义的QLabel控件void MyLabel::mousePressEvent(QMouseEvent *ev){ //其坐标是相对于其直接父控件的,在此为QLabel(tmp,tmp1,tmp2值相同) int tmp = ev->y(); int tmp1 = ev->
2020-10-16 16:06:03
1660
原创 VS中的插件VAssistSupport安装
1、首先关闭VS,然后点击.exe文件安装2、将下图中的两个.dll文件拷贝到下面路径文件中即可还可以通过在系统盘中搜VA_X.dll文件来定位路径所在文件,将VA_X.dll替换掉。3、打开VS,将插件更新禁掉...
2020-09-27 17:54:13
397
原创 Windows系统上常用快捷键整理
ctrl + shift + delete 快速清除浏览器缓存ctrl + alt + delete 快速进入任务管理器页面window + L 快速锁定电脑window + D 所有窗口最小化,也即显示桌面Win + , :暂时回到桌面,松开Win时恢复到之前的状态window + E 打开我的资源管理器(我的电脑)window + R 快速打开运行alt + tab 快速查看切换所打开的应用窗口Ctrl+B 键也可以恢复/隐藏 360浏览器上面的收藏栏。Ctrl + s.
2020-09-27 14:03:27
498
原创 Qt中对文件读写操作
Qt中自己定义一套对文件的读写操作:QFile一、创建一个窗口程序来选择某一路径下的文件,读取其所有内容Qt 默认支持格式为UTF-8,如果读取的文件为GBK或者ANSI格式,则需要特别设置读取文件格式。1、ui页面的设置布局首先分别添加控件LineEdit 、TextEdit 、PushButton、 Widget 。其中LineEdit和PushButton位于Widget控件中。其整体竖直布局,结果如下:2、使用readAll一次读取所有内容的代码实现如下:3、运行的结果如图:(
2020-09-04 18:04:17
14261
原创 Qt 中的事件-10
Qt中的事件为QEvent,常用的是点击或移动鼠标来触发事件。一、Qt中的鼠标进入和离开事件如鼠标移入和离开都会有对应的事件,在此使用Label控件来测试对应的鼠标进入和移出事件。1、创建自定义Label控件因为要通过Label来实现检测鼠标的进入和移出事件,需要自定义控件。具体是通过对Label进行封装处理。在此可以通过C++代码来实现对应的功能,不使用ui。在当前项目上右键,选择添加新文件,选择如下选项。自定义类名为myWidget,基类为QWidget,将会产生两个文件,分别为: myw
2020-09-03 18:18:08
297
原创 自定义控件的封装-09
封装需要自定义的控件对于很多项目来说有重要的应用价值,具体操作流程如下一、通过ui文件来添加自定义控件正常情况下可以通过 代码 或 拖拽 两种方式来对自定义的控件进行ui设计。为了提高效率,一般是通过拖拽 的方式来进行对应的ui设计。1、添加新文件右键项目来添加新文件,选择:Qt------->Qt设计师界面类选择 Widget 选项自定义自己的类名如下:最终会生成如下的文件 capsulationwidget.ui ,创建的自定义控件就是在该ui文件下来进行操作。将需要进行封装的控件
2020-09-03 15:46:11
336
原创 控件的基本使用-08
常用控件简介1、弹簧需要在布局之后才能使用,才能起作用。常用于控制其它控件的位置2、按钮PushButton:常用按钮ToolButton:工具按钮,可以在文字前加图片RadioButton:单选框CheckBox:复选框3、条目控件该控件中常常用来添加条目4、容器用来放其它控件的一种容器GroupBox:将一些控件分成一组,然后便于管理ScrollArea:将该分组内的多个控件以滚动条的形式来进行查看ToolBox:将多个控件以分页的形式来进行查看W
2020-09-02 16:34:27
1235
原创 创建标准对话框-07
Qt 提供了很多标准的对话框可供选择,用于简化开发流程,并且很多对话框都是通用的,无需每次都自己实现一个对话框一、消息对话框消息对话框有几个常用的标准按钮,是静态成员函数,它们都是模态对话框。其用法如下:1、创建各种消息对话框的方式如下【注】可以根据需要每次创建一个对应的对话框二、其它对话框如:QColorDialog、QFileDialog等点击新建按钮就会打开对应路径的文件夹。...
2020-09-01 16:03:50
206
原创 模态和非模态对话框创建-06
在创建对话框时,常常会有两种对话框的形式:1、模态对话框: 弹出该对话框后,若不关闭则不能对其它窗口进行操作。2、非模态对话框: 在不关闭该对话框的情况下可以对其它窗口进行操作。一、创建模态对话框1、代码如下2、效果如下二、创建非模态对话框【注意】由于创建模态对话框时,在槽函数,即Lambda表达式中会使用newDialog.exec()来阻塞其执行结束,因此会一直显示,所以可以将其创建的结果放在栈上,而不会立即执行结束后被释放掉了。 但是在创建非模态对话框时,因为没有阻塞功能,此时如果将
2020-09-01 15:01:20
270
原创 QMainWindow构建-04
在此主要使用代码来创建对应的控件Qt 利用代码所创建的如:按钮、菜单栏、工具栏 等等控件,默认都是独立于主窗口的,需要将其加入到窗口中去。1、在将创建的工具栏、菜单栏、浮动窗口、按钮、中心部件等控件加入到窗口中时,若该控件只能有一个,则其前缀为set开头,一般为setXXXX;若该控件可以有多个,则其前缀为add,一般为addXXXX。...
2020-08-31 17:02:09
312
原创 函数指针
一、函数指针:即:指针变量中存放的是函数的地址,通过该指针可以直接调用其指向的函数。程序中定义的函数,在编译时会为其分配对应的内存空间。该内存空间的地址即为函数名。而对函数名进行取地址操作的结果仍为该函数地址。1、定义函数指针/* P即为函数指针,前面的 int为指针所指向函数的返回值类型, 后面的(double,double) 为指针所指向函数的形参列表。*/int (*p)(double,double);2、应用实例将函数的地址赋给函数指针,然后通过函数指针来调用对应的函数
2020-08-25 17:17:13
487
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人