![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
talkingmute
这个作者很懒,什么都没留下…
展开
-
字符数组学习
字符数据学习笔记原创 2022-06-20 00:26:28 · 536 阅读 · 0 评论 -
VC中GDI绘图技术基础知识:hdc设备环境句柄,坐标系
VC中GDI绘图技术:》》通过HDC设备环境句柄绘图有三种方式:标准客户区绘图,临时客户区绘图,非客户区绘图1-标准客户区绘图,是在WM_PAINT消息回调时执行,调用BeginPaint函数,EndPaint函数。2-临时客户区绘图,是在任何消息回调时都可以执行,调用GetDc获取临时客户区句柄进行绘图,最后调用ReleaseDc释放。3-非客户区绘图,是在WM_NCPAINT消息回调时执行,针对一些窗口标题和边框的绘制,是调用GetWindowDc获取句柄进行绘图,最后调用Release原创 2022-05-05 11:24:39 · 833 阅读 · 0 评论 -
qt中操作多个数据库时的注意事项
当我们有时需要操作多个数据库时,可能会这样写:db=QSqlDatabase::addDatabase("QSQLITE");...db=QSqlDatabase::addDatabase("QSQLITE");...这样运行会出现警告:QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.原创 2021-12-23 07:31:30 · 2632 阅读 · 0 评论 -
qt中添加mysql驱动插件的详细教程
在qt中如需要mysql数据库相关开发,需要先安装对应的驱动插件,否则会提示错误。这里具体讲解下如何安装mysql驱动插件:1-先下载myslq数据库的开发包,将里面lib目录下的这两个文件复制:粘贴到qt对应编译环境的bin目录下:2- 找到qt源码目录下mysql工程,打开它:修改里面的.pro文件如下:INCLUDEPATH +="E:\mysqlsrc\include"LIBS +="E:\mysqlsrc\lib\libmysql.lib"...原创 2021-12-22 22:43:45 · 1519 阅读 · 1 评论 -
qt5中基于QObject派生的线程创建应用方法
基于QObject派生的类创建多线程应用,是新学习qt朋友比较难掌握的,这里详细示范下如何操作:1-首先创建一个工作线程类:#include <QObject>//定义我们的工作线程,派生于QObjectclass workthread : public QObject{ Q_OBJECTpublic: explicit workthread(QObject *parent = nullptr); void workfun.原创 2021-12-21 20:51:40 · 319 阅读 · 0 评论 -
qt中利用正则表达式提取字符串中的浮点数和整数
当我们需要从一个字符串中提取数字时,可以用正则表达式来操作 QString str = "你的金额是: 0.22示范33^%zd卡兹克44是13.5x的5&ss"; QRegExp rx("\\d+\\.\\d+|(\\d+)");//定义正则表达式,前面是浮点数的规则,后面是整数的规则 QList<float> list; int pos = 0; while ((pos = rx.indexIn(str, pos))原创 2021-12-15 11:47:03 · 2983 阅读 · 0 评论 -
qt5中信号和槽连接,对于多种参数重载的处理
//因为QSpinBox的valueChanged信号有重载,为避免二义性,需要通过声明函数指针方式,来进行信号和槽的连接。 void (QSpinBox::*p)(int)=&QSpinBox::valueChanged;//函数指针p前要加类名作用域符号 connect(ui->spinBox,p,ui->horizontalSlider,&QSlider::setValue); connect(ui->horizontal...原创 2021-09-12 18:37:54 · 357 阅读 · 0 评论 -
qt中自动补全qcompleter使用
可以在任何Qt的窗口小部件中使用QCompleter提供自动补全功能,如:QLineEdit和QComboBox。当用户开始输入一个字符,QCompleter根据单词列表提示完成单词,它需要传递一个QStringList来构造QCompleter。 QStringList list; //list内容根据需求自行添加 list << "andy" << "6789" <<"baby"; QCompleter *complet原创 2021-09-09 22:23:46 · 1804 阅读 · 0 评论 -
qt中模态对话框和非模态对话框
模态对话框是会阻塞程序窗口的用户操作,必须要关闭后才可以进行后续的执行。而非模态对话框则不会阻塞用户操作,更灵活些,只是要注意设置一个关闭时自动释放内存的属性。 QDialog dlg; dlg.setWindowTitle("模态对话框"); dlg.resize(400,400); dlg.exec(); QDialog *pdlg=new QDialog; pdlg->setWindowTitle("非模态对话框");原创 2021-09-09 16:54:44 · 317 阅读 · 0 评论 -
qt中自定义信号和槽函数,信号重载
关于自定义信号和槽函数,是qt中最常用的。信号就相当于函数声明,没有返回值,可以带参数,需要signals开头。在connect连接时,最好使用qt5函数指针的方法,在访问类中的成员函数时前面要加对应类的作用域:类名::头文件中:signals: void mysig(); void mysig(int ,QString);private slots: void myslot1(); void myslot2(int ,QString);源原创 2021-09-08 21:56:21 · 764 阅读 · 0 评论 -
qt中事件分发器event和事件过滤器eventFilter使用
在qt中窗口部件接收到主程序的消息映射后,会进入到事件分发器模块,就是event虚函数接口,我们可以在该接口里进行特定事件的自定义处理。而当窗口部件需要过滤某一事件时,可以使用事件过滤器模块,就是eventFilter虚函数接口。对于事件分发器使用,需要先在指定控件头文件里声明,这里是一个自定义控件mylabel:protected: bool event(QEvent *e);再在源文件中实现:bool mylabel::event(QEvent *e){原创 2021-09-08 13:13:34 · 1701 阅读 · 0 评论 -
关于qt不规则窗体的应用设置
qt中不规则窗体应用,大多是没有边框、背景透明的,而且是可以随着鼠标按下移动的 //去掉窗口边框 this->setWindowFlag(Qt::FramelessWindowHint); //设置背景透明 this->setAttribute(Qt::WA_TranslucentBackground); //this->setGeometry(0,0,200,200);//设置窗口位置和大小对于不规则窗口的移动,需要重载鼠标原创 2021-08-21 11:10:59 · 242 阅读 · 0 评论 -
再谈qt中的绘图设备QPixmap,QImage,QPicture
qt中的绘图操作,是通过QPainter这个绘图对象类,在绘图设备上进行。绘图设备除了QWidget窗体外,还有QPixmap,QImage,QPicture这三种: //QPixmap主要是用于显示,只能在主界面UI线程中使用,和具体平台有关。 //而QImage主要是用于网络传输,支持多线程,和平台无关。 QPixmap pix(200,200);//定义一个QPixmap绘图设备,相当于一张画布 pix.fill(Qt::green);//指定填充颜色原创 2021-08-19 19:56:23 · 958 阅读 · 0 评论 -
qt中QPainter绘图操作介绍
QPainter是qt中绘图操作要用的绘图类,相当于一个画家。而绘图设备类QPainterDevice是相当于要绘画的画板,要在哪里绘画。画笔类QPen就是手里拿的画笔,有什么颜色、像素大小等。画刷类QBrush就是在一个封闭区域要画什么用的。头文件中,需要先声明paintEvent函数,这是绘图操作都必须要重载的虚函数:protected: void paintEvent(QPaintEvent *);void smallwidget::paintEvent(QPaintEve原创 2021-08-17 14:05:17 · 1710 阅读 · 0 评论 -
qt中有关定时器的两种实现方式
关于定时器,qt中有两种实现方式:1-基于QObject的startTimer接口,int QObject::startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer),第一个参数是时间间隔(毫秒单位),该接口返回一个定时器的ID,后面关闭定时器或者定时器响应函数需要用到,记得保存该ID。在头文件中,需要重写timerEvent虚函数,当定时器事件发生时触发。protected: void timerEve原创 2021-08-16 21:35:55 · 441 阅读 · 0 评论 -
qt中sqlite数据库操作方法
在qt的sqlite数据库编程中,需要先在工程文件添加:QT += core gui sql在工程头文件中添加对应qtsql头文件,声明QSqlDatabase类对象,以及自定义的数据库初始化接口DbInit。#include <QtSql> QSqlDatabase db;bool DbInit();还有一些数据库操作的槽函数:private slots: void GetDbRecord(); void AddRec原创 2021-06-01 16:58:28 · 1130 阅读 · 0 评论 -
C++函数模板使用
函数模板作用就是建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,在发生函数调用时编译器会根据传入的实参来推演形参的值和类型。它的出现是为了提高复用性。template<typename T>T getBigValue(T a,T b){ if(a>=b) return a; else return b;}int a=3,b=2;//第一种自动类型推导,需要传入的实参数目类型和声明的形参一致qDebug()<原创 2021-04-07 08:58:20 · 68 阅读 · 0 评论 -
qt中定时截图和剪贴板
qt中定时器的使用,是用的QTimer类。#include <QTimer>QTimer * m_timer;m_timer=new QTimer; //开始设置定时器响应槽函数 connect(m_timer,SIGNAL(timeout()),this,SLOT(slotTimerFun())); //启动定时器 m_timer->start(ui->spinBox->valu原创 2021-04-07 08:37:46 · 282 阅读 · 0 评论 -
c++获取进程路径的几种方法(32位/64位程序的坑)
这两天在做一个网络程序时,遇到了通过进程pid获取进程路径的需求,之前是用CreateToolhelp32Snapshot获取指定pid的模块,然后通过Module32First获取到其中的路径信息。不过因为本身程序是32位的,在获取64位程序时,却返回了299错误。经过网上查询,找到了另外的方法:OpenProcess打开指定pid进程,获得其句柄,该进程要有PROCESS_QUERY_INFO...原创 2020-04-12 00:23:56 · 3061 阅读 · 1 评论 -
GetModuleHandle,GetModuleFileName函数区别和获取当前窗口标题和对应的进程路径
GetModuleHandle(lpModuleName),lpModuleName是模块的名称,可以是**.dll或者**.exe,如果没有扩展名,则默认为dll.如果模块名称通过路径来指定,则路径中必须使用"\",而不是"/".执行时,该函数通过名称来查看调用进程已映射的模块,返回符合的模块句柄。如果GetModuleHandle(NULL),则返回调用进程本身的模块句柄。成功,则...原创 2020-03-02 20:50:41 · 1285 阅读 · 0 评论 -
c++11的lambda表达式在qt信号槽connect使用
在c++11中引入了lambda表达式,就是匿名函数,可以直观看到函数执行过程,提高程序运行效率,因为不牵涉到函数参数的入栈调用。lambda函数的使用场景: 1、一些短小的函数,但只使用一次的。 2、配合STL泛型算法使用,比如sort(begin,end,function)这里function就可以用lambda函数。 3、回调函数。lambda函数被设计的目的...原创 2020-02-10 14:28:30 · 1401 阅读 · 0 评论 -
qt中foreach遍历和c++标准11的for
foreach在很多语言中就是循环遍历的作用,从一个可遍历的容器对象里依次提取一个元素。关于在qt中的使用如下: QStringList sl=str.split(",");//split分割以某字符串,到QStringList列表,这里是以,逗号分隔 sl<<tr("我的编号:%1,我的国籍:%2").arg("888").arg(tr("中国"));//&l...原创 2020-02-07 13:28:55 · 878 阅读 · 0 评论 -
vs开发和调用dll步骤
dll是动态链接库文件,是windows系统中实现模块动态加载必不可缺的,这里以vs2015建立dll为例,先做介绍:首先在vs新建项目-win32-dll,选导出符号(可以自动导出dll中的一些函数或者类型),预编译头(自动加入预编译指令)我们这里是创建了一个simpledll的工程,创建后,在头文件添加如下:这里,#ifdef SIMPLEDLL_EXPORTS#defi...原创 2020-01-16 11:36:31 · 3245 阅读 · 0 评论