- 博客(158)
- 资源 (2)
- 收藏
- 关注
原创 Qt使用COM组件(QAxObject)调用WPS无效的问题
最近用Qt调用COM组件的方式导出word报告,本来用office导出的,但是office自动更新到某个版本之后,word里面的图片不显示了。只好试试WPS,但是,报错了: m_wordWidget = new QAxObject(); bool bFlag = m_wordWidget->setControl("word.Application");//初始化COM对象,新建一个word应用程序 if(!bFlag) { bFlag = m_wordW
2021-12-23 09:58:37
5783
7
原创 QListView当前页(可视范围)全选反选
注意:需要先设置ListView支持多选QStandardItemModel *model = ui.listView->model(); for(int i=0; i<model->rowCount(); ++i) { QRect rectItem = ui.listView->visualRect(model->index(i,0)); if(ui.listView->viewPort()->visibleRegion().contains(rec
2021-02-02 14:17:27
1350
原创 Qt日历控件显示周数为:日一二三四五六
ui->calendarWidget->setHorizontalHeaderFormat(QCalendarWidget::SingleLetterDayNames); ui->calendarWidget->setLocale(QLocale::Chinese);Qt日历样式设置参考:Qt日历样式设置参考——公孙二狗
2020-12-10 11:32:14
1516
原创 QListView等视图更改选中时文本颜色
1.QSS样式表只能统一设置,不够灵活2.通过代理 void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { QStyleOptionViewItem viewOption(option); //高亮显示与普通显示时的前景色一致(即选中行和为选中时候的文字颜色一样)
2020-12-07 15:35:46
2639
原创 QML调用C++的三种方法
1.注册法由于QML引擎与Qt元对象系统的紧密集成,可以从QML代码访问由QObject派生的类适当公开的任何功能。这使得C ++类的属性和方法可以直接从QML访问,通常很少或无需修改。QML引擎能够通过元对象系统内省QObject实例。这意味着,任何QML代码都可以访问QObject派生类实例的以下成员:属性(使用Q_PROPERTY注册的属性)方法(需注册为public slots或是标记为Q_INVOKABLE)信号(此外,如果已使用Q_ENUMS声明枚举,则可以使用枚举。)通常,无
2020-11-10 10:21:09
9191
原创 QListWidget删除问题
我所知道的QListWidget删除项有两种方法方法一 int n=ui->listWidget->count();//获取item的总数 //删去所有item for(int i=0;i<n;i++) { /* 使用takeItem(row)函数将QListWidget中的第row个item移除, 移除需要使用delete手动释放其在堆上占用的空间 */ //这里是0,
2020-11-06 14:05:29
3515
原创 Qt程序最小化或WIN+D后再打开,界面部分或全部假死的问题
前言碰到一个很奇怪的问题,双屏下,Qt程序最小化或WIN+D后再打开,界面出现部分或全部假死的现象,单屏下不会有这个问题,纠结了很久,总算解决了,Mark一下:原因在最小化窗口属性后,Qt :: WA_Mapped从QWidget中删除(可以在qwidget.cpp中设置断点到setAttribute_internal来检查它)。 但是在显示窗口后没有再次设置此属性。 如果不满足QWidgetBackingStore :: sync中的(discardSyncRequest(tlw,tlwExtra
2020-11-05 14:24:12
2422
2
原创 QCustomPlot知识集锦
排名部分先后,我的博客肯定排在前面(逃ε=ε=ε=┏(゜ロ゜;)┛QCustomPlot_简单入门QCustomPlot_我的博客专栏QCustomPlot_哀歌与世无争博客QCustomPlot_朝十晚八博客 QCustomPlot_易学教程
2020-11-04 11:55:10
502
原创 QCustomPlot坐标轴无限缩放引发的刻度问题
QCustomPlot设置坐标轴缩放之后,坐标轴可以无限缩放,缩放到一定程度时,坐标轴刻度会显示为同一个数值,很不合适。 解决方法是使用自定义ticker,以整形为例:QSharedPointer<QCPAxisTickerFixed> intTicker( new QCPAxisTickerFixed ); //设置刻度之间的步长为1 intTicker->setTickStep(1); //设置缩放策略intTicker->setScaleStrate
2020-11-04 11:47:28
3589
3
原创 VS/Qt程序互斥,防止程序重复启动
#include <comdef.h> bool CheckOnly(){ //创建互斥量 HANDLE m_hMutex; m_hMutex = CreateMutex(NULL, FALSE, "Parse"); //检查错误代码 if (GetLastError() == ERROR_ALREADY_EXISTS) { //如果已有互斥量存在则释放句柄并复位...
2020-10-30 10:36:41
83
1
原创 QDialog代码阻塞界面不阻塞
QDialog调用exec函数后,通常会阻塞其他窗口QDialog dlg(this); dlg.setModal(false); dlg.show(); dlg.exec;增加setModal和show之后,代码还是会阻塞到dlg退出后,但不会阻塞UI,可以操作dlg之外的窗口。
2020-09-28 15:40:22
3566
原创 QTableWidget用法总汇
1.QTableWidget不能在mainwindow中随主窗口的大小变化?解决:在表格外部添加布局。代码:tableWidget = new QTableWidget; tableWidget ->setObjectName(QString::fromUtf8("tableWidget")); QVBoxLayout *verticalLayout; verticalLayout->addWidget(tableWidget );2.将表格变为禁止编辑
2020-06-08 11:19:56
1399
原创 QTextEdit获取文本行号
1.光标法#include <QTextLayout> #include <QTextBlock> QTextCursor tc = ui.textEdit->textCursor(); //当前光标QTextLayout *lay = tc.block().layout();int iCurPos= tc.position() - tc.block().position();//当前光标在本BLOCK内的相对位置 //光标所在行int iCurrentLine
2020-05-27 10:15:20
2856
原创 Qt使用正则实例
1、寻找// integers 1 to 9999QRegExp rx("[1-9]\\d{0,3}");// the validator treats the regexp as "^[1-9]\\d{0,3}$"QRegExpValidator v(rx, 0);QString s;int pos = 0;s = "0"; v.validate(s, pos); ...
2020-05-12 15:06:55
249
原创 QLineEdit对输入做限制
1、前言QLineEdit支持使用函数setValidator对输入做限制,支持整数、小数、正则等形式的Validator2、示例 //限制输入整数,范围0-100 ui->lineEdit->setValidator(new QIntValidator(0,100,this)); //限制输入小数,范围0.000000-999999999.999999,经度小数点后6位 ui->lineEdit->setValidator(new QDoubleValidato
2020-05-12 14:54:14
5095
转载 Windows下,string与wstring互转
#include <Windows.h>//将string转换成wstring wstring string2wstring(string str) { wstring result; //获取缓冲区大小,并申请空间,缓冲区大小按字符计算 int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(...
2020-04-02 09:41:45
747
原创 .pro文件转.vcproj文件(QtCreater项目转VS+Qt项目)
前言:QtCreater的.pro文件中,有许多写法在VS+Qt项目中,并不知道怎么写,网上相关的资料也很少,例如CONFIG,QTPLUGIN等,这个时候,我们就可以写好.pro文件,再将它转换为VS可以打开的.vcproj文件1、打开Qt命令行工具通常情况下,它在Windows开始菜单栏下,例如:2、进入.pro文件所在文件夹3、生成vcproj文件3.1、xx.pro的TEM...
2020-02-10 22:22:16
1973
1
原创 OpenCV解析视频图片
包含OpenCV库,包含头文件#include “opencv2/imgproc/imgproc_c.h” #include "opencv2/opencv.hpp" using namespace cv;//读取图片
2019-12-20 11:10:51
1122
原创 Qt/C++在子线程执行函数的三种方法
1、使用QtConcurrent前言: QtConcurrent 是命名空间 (namespace),它提供了高层次的函数接口 (APIs),使所写程序,可根据计算机的 CPU 核数,自动调整运行的线程数目。1.1、 函数原型QFuture<T> QtConcurrent::run(QThreadPool::globalInstance(), function, ...) ;......
2019-12-20 10:13:13
6248
2
原创 VS/Qt调用外部库的三种方法
1、代码法#ifdef _DEBUG #pragma comment (lib,"..\\debug\\my.lib") #else #pragma comment (lib,"..\\release\\my.lib") #endif2、VS工程属性配置法①、项目 → 属性 → 配置属性 → C/C++ → 常规 → 附加包含目录:加上库对应头文件目录 ②、项目 → 属性 → 配...
2019-12-20 09:49:12
4533
原创 Qt+Windows API给指定网卡增加IP
//pro文件中加入network模块#include <QNetworkInterface> #include <QProcess>//Windows API相关依赖#include"iphlpapi.h"#pragma comment(lib,"Iphlpapi.lib") //Windows API相关依赖//PIP_ADAPTER_INFO结构体存储...
2019-12-17 23:39:12
1749
1
原创 命令行配置电脑IP(Windows下设置、增加、删除)
增加netsh interface ipv4 add address "本地连接 5" 192.168.10.111 255.255.255.0 192.168.1.1删除(需要管理员权限)netsh interface ipv4 delete address "本地连接 5" 192.168.10.111 设置netsh interface ip set address "本地连...
2019-12-16 15:28:02
4435
原创 SQLite数据库中rowid的使用
SQLite数据库中rowid使用SQLite中每个表都默认包含一个隐藏列rowid,使用WITHOUT ROWID定义的表除外。通常情况下,rowid可以唯一的标记表中的每个记录。表中插入的第一个条记录的rowid为1,后续插入的记录的rowid依次递增1。即使插入失败,rowid也会被加一。所以,整个表中的rowid并不一定连续,即使用户没有删除过记录。由于唯一性,所以rowid在很多场合...
2019-12-11 14:36:52
2395
原创 Qt使用QPDFWriter和QPainter生成PDF的问题
由于项目上有需要,这几天在研究Qt生成PDF。但是遇到问题,绘制第二页的时候,同一坐标和尺寸,与第一页的表现完全不一致。 QFile pdfFile(QCoreApplication::applicationDirPath() + "/test.pdf"); pdfFile.open(QIODevice::WriteOnly); QPdfWriter* pWriter = new QPdf...
2019-11-17 23:07:13
3906
原创 VS/Qt调用外部程序的几种方法
1、QProcess(Linux/Windows)QProcess::startDetached("calc.exe"); //也可用来执行命令行语句,如杀死进程QProcess::startDetached("takskill /f /im calc.exe"); 2、ShellExecute(Windows接口函数)ShellExecute(0,(LPCWSTR)L"open",...
2019-11-17 23:05:16
2129
原创 Windows下根据程序名称找到窗口句柄并操作窗口
1、根据程序名称找到进程#include "stdafx.h"#include<iostream>#include<Windows.h>#include<TlHelp32.h>using namespace std;int _tmain(int argc, _TCHAR* argv[]){TCHAR c[]={L"cmd.exe"}; //定义字...
2019-11-17 22:08:38
4844
原创 Windows下寻找某个进程
1、函数法//IPTip_Main_Window 为Windows软键盘HWND MyHandle = FindWindow(L"IPTip_Main_Window",NULL); if(!IsWindowEnabled(MyHandle))//不可用{ } else//可用 { }2、遍历法// testlog.cpp : 定义控制台应用程序的入口点。#include "...
2019-11-16 16:24:11
1238
原创 Qt文本过长时,缩减文本并显示省略号
//要显示的超长字符串 QString strDes = "这是一个非常非常非常长的字符串"; strDes = QFontMetrics(ui.label->font()).elidedText(strDes, Qt::ElideRight, ui.label->width())假设ui.label的长度小于strDes,则显示为这是一个......
2019-11-01 14:23:44
6845
原创 Inno Setup脚本语法及关键字
; 脚本由 Inno Setup 脚本向导 生成!; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!;Inno Setup 是一个免费的 Windows 安装程序制作软件。;第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞争力可能已经超过一些商业的安装程序制作软件;它是真正免费的软件,即使作为商业应用;还有一个特点,压缩率特别高,特别适...
2019-10-18 18:58:23
1980
1
原创 C++/Qt结构体初始化
结构体初始化我们经常会用到,使用未初始化的结构体,结果是不可预估的下面介绍几种常用的结构体初始化方式:1、结构体内分别初始化typedef struct stTemp { int nName; int nType; char arrayTemp[50]; stTemp():nName(-1),nType(-1) //构造函数初始化列表 //也可用 struct s...
2019-10-15 10:46:09
11514
1
原创 Qt在Item中存取自定义数据/QVariant存取自定义数据
很多时候,我们对QTableWidget等控件的Item进行数据的存取,此时,我们需要用setData()函数将数据存进去,再通过data()函数将数据取出来。实例:typedef struct stTemp { int nName; int nType; stTemp()={-1,-1}}STT; //存数据STT stStuent; ...//结构体初始化...
2019-10-08 09:14:04
2888
原创 Qt多屏处理
Qt中,QDesktopWidget封装了一系列用于多屏处理的函数,头文件:#include <QDesktopWidget>1、使用QDesktopWidget::screenCount()获取当前操作系统的可用屏幕数2、使用QDesktopWidget::primaryScreen()获取主屏幕的索引3、使用QDesktopWidget::availableGeometry(...
2019-10-04 16:54:21
9296
1
原创 VS当前不会命中断点,还未为文档加载任何符号解决方案
新建了一个VS项目,使用VS2015静态库Release版本,发现无法命中断点,提示当前不会命中断点,还未为文档加载任何符号在网上搜了下,说什么不能在Release模式打断点,可笑,之前的项目就是在Release模式打断点的。经过与之前项目的属性对比,终于解决:1、为项目选择字符集2、选择调试信息格式如不能解决,尝试点击以下链接:https://blog.youkuaiyun.com/shak...
2019-07-10 10:23:34
21591
8
原创 WaitForSingleObject用法(Windows下的线程同步)
1、头文件#include <windows.h>2、使用//a、声明一个句柄 HANDLE m_Event; //b、初始化并重置 m_Event= CreateEvent(NULL, TRUE, FALSE, NULL); ResetEvent(m_Event); //c、使用 void Function1() { ResetEvent(m_Even...
2019-03-02 14:57:02
2861
原创 std::wstring的相关转换集锦
#include &amp;lt;Windows.h&amp;gt; std::string MyClass::WStringToSString(std::wstring fileName) { int nLen = WideCharToMultiByte(CP_ACP, 0, fileName.c_str(), -1, NULL, 0, NULL, NULL); std::s...
2019-02-18 10:34:28
2568
原创 Log4Qt的基本使用
1、下载Log4Qt官网下载GitHub(推荐)2、加载到项目可以用源码自行编译成库使用,或直接在项目内添加源码。 1. 解压log4qt到目标文件夹,如D:\Qt\下;2. qt项目的pro文件中加入一行:include(D:\Qt\log4qt\src\log4qt\log4qt.pri),pri文件会将需要的h文件和cpp文件加入到qt项目中;3、 简单使用#inclu...
2019-01-29 14:09:26
14221
5
原创 Qt获取活动窗口尺寸(焦点窗口)
//当前获得焦点的窗口 int activeWidth = QApplication::activeWindow()->width();注意:在构造函数中调用QApplication::activeWindow()可能会引起程序崩溃。
2019-01-27 12:08:44
3848
原创 Qt获取屏幕DPI和分辨率
DPI:Qt+MSVC // Get desktop dc HDC desktopDc = GetDC(NULL); // Get native resolution float horizontalDPI = GetDeviceCaps(desktopDc, LOGPIXELSX); float verticalDPI = GetDeviceCaps(desktopDc, LOGPI...
2019-01-27 12:06:28
10762
1
原创 完全自定义QMessageBox样式
1、综述Qt大佬:一去、二三里的自定义QMessageBox上述链接的窗体继承于大神的自定义Widget,我这里稍作修改,继承于QDialog方便了使用,这里可以任意实现QMessageBox的样式而不受系统约束(例如标题栏)自定义QMessageBox窗体结构示意:2、头文件:#ifndef MESSAGEBOX_H#define MESSAGEBOX_H#include &amp;amp;l...
2018-12-25 10:30:56
23378
4
QTmedia播放音乐和视频的小例子
2018-01-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人