QT
宇宙379
C/C++,VC++
展开
-
QT pro 递归模板
QT pro 模板原创 2022-11-07 14:40:01 · 239 阅读 · 0 评论 -
Qt窗口内嵌Word,PPT,Excel
参考#include "mainwindow.h"#include "ui_mainwindow.h"#include <QDebug>#include <QDesktopServices>#include <QUrl>#include <windows.h>#include <winuser.h>#include <QTime>MainWindow::MainWindow(QWidget *parent)原创 2022-02-09 13:46:28 · 3212 阅读 · 2 评论 -
QT bin二进制文件读写发送
//通讯协议: 0x55,0xAA,datalen(2),total_packet(2),cur_packet(2), data(1024), checksum(1)const static int PACKET_SIZE = 1024;//每次发送的字节数const static int PACKET_HEAD_SIZE = 10; //协议字节数void MainWindow::sendBinFile(const QString& filePath){ QFile f原创 2021-08-19 13:34:06 · 5163 阅读 · 11 评论 -
Qt 守护进程创建
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QDebug>#include <QTimer>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){ ui->setupUi(this); m_process = new QProcess();原创 2021-05-21 15:16:22 · 856 阅读 · 1 评论 -
记录一次\ufeff bom的bug
突然发现程序运行居然界面有些不对,多了一些空白,还多了一个滚动条。what‘’s the fuck!我基本没改代码啊。git回退到以前的版本,没问题。再返回新版本,有问题。纳尼???git diff 加 Beyond Compare 看了下,发现一个怀疑的地方:貌似一样,然而编码看下:哦,原来是\ufeff,是bom的问题。删除\ufeff,问题解决。估计是不小心在编辑器里原则了bom。...原创 2021-05-06 20:31:03 · 145 阅读 · 0 评论 -
RTTI symbol not found for class ‘QObject‘ + double free or corruption
记录一个崩溃crash的问题。在方法中使用一个栈类对象时,程序出现崩溃。原因是:QT中 如果一个子级对象是new生成的(堆对象),当父级对象销毁时,会自动调用operator delete删除他的所有子级对象。这样有三种情况:如果一个子级对象是new生成的,他无需自己销毁;如果一个子级对象不是new生成的(栈对象),他在父级对象销毁前自己主动销毁自己,没问题。如果一个子级对象不是new生成的(栈对象),他不在父级对象销毁前自己主动销毁自己,父级对象调用operator delete他时就会出原创 2021-03-29 17:20:34 · 5025 阅读 · 0 评论 -
QJson序列化与反序列化
此QJson并不是QT内部的QJson,而是第三方库。 主要用于json序列化和反序列化,用于网络通讯。解析:从JSON到QVariant。// create a Parser instanceQJson::Parser parser;bool ok;// json is a QString containing the data to convertQVariant result = parser.parse (json, &ok);序列化:从QVariant到JSON。原创 2021-03-27 14:02:37 · 1643 阅读 · 0 评论 -
QSignalMapper使用入门
该类收集一组无参数信号,并使用与发送信号的对象对应的整数、字符串或小部件参数重新发射它们。注意,在大多数情况下,您可以使用lambda将自定义参数传递给插槽。这是较低的成本,并将简化代码。类支持特定字符串、整数、对象和小部件与特定对象的映射。QSignalMapper我们可以理解为转发器,此话怎讲呢?比如,按钮点击的响应槽,绑定到QSignalMapper上,QSignalMapper收到按钮的点击后,又通知到另外的控件上做处理。#include "mainwindow.h"#include "ui原创 2020-12-03 16:57:22 · 2859 阅读 · 0 评论 -
QWebEngineView 使用
群里有人问,于是写了个demo。pro文件:QT += webenginewidgets webchannel头文件:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QWebEngineView>#include <QtWebChannel>QT_BEGIN_NAMESPACEnamespace Ui { class MainWindow; }QT_原创 2020-12-03 16:36:23 · 444 阅读 · 0 评论 -
百度地图API入门9-海量marker点添加
//添加海量点数据------------------------------------------------------------------- var points = []; for(var i = 0; i < 100; i++) { var point = new BMap.Point( 104.125546+i*0.005,30.602393+i*0.005); points.push(point); } var options = { size: BMAP_P.原创 2020-11-05 11:24:37 · 1436 阅读 · 0 评论 -
百度地图API入门8-JS根据两点获得角度
function getAngle(p1,p2) {//顺时针,参数为BMap.Point类型 var angle = Math.atan2(Math.abs(p1.lng - p2.lng), Math.abs(p1.lat - p2.lat)); if (p2.lng >= p1.lng) { if (p2.lat >= p1.lat) { } else { angle = Math.PI - angle; } } else { i原创 2020-10-13 17:26:35 · 634 阅读 · 0 评论 -
百度地图API入门7-QT与JS通讯
QT += webenginewidgets webchannel//地图布局 m_webView = new QWebEngineView(this); QStackedLayout* layout = new QStackedLayout(ui->frame); ui->frame->setLayout(layout); layout->addWidget(m_webView); QFileInfo file("./Res...原创 2020-10-13 17:22:43 · 327 阅读 · 0 评论 -
百度地图API入门6-QT加载离线百度地图
离线和在线的唯一区别是在线加载的是在线(网络)资源而离线加载的是离线(本地)资源,所以只要我们把在线的资源下载下载,将代码里在线链接改为离线链接即可。在线的资源主要有三类:1.地图这个我们需要通过第三方下载软件下载地图图片;这样的软件很多,太乐地图下载器,全能地图下载器,水经注下载区等;2. js,css文件3. 图片等资源网上有别人下载好的成熟的资源,直接用即可。...原创 2020-10-13 17:16:18 · 843 阅读 · 0 评论 -
百度地图API入门5-QT加载百度地图
新建mainwindow窗口工程,添加一个frame控件用于放置地图。pro添加:QT += webenginewidgets webchannel头文件#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QWebEngineView>#include <QtWebChannel>QT_BEGIN_NAMESPACEnamespace Ui { cla.原创 2020-09-24 14:34:51 · 872 阅读 · 1 评论 -
百度地图API入门4-常用代码
1.初始化地图,设置中心点坐标和地图级别map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); 2.设置地图显示的城市map.setCurrentCity("成都"); 3.开启鼠标滚轮缩放map.enableScrollWheelZoom(true); 添加地图类型控件map.addControl(new BMap.MapTypeControl({ mapTypes:[ BMAP_N原创 2020-09-24 14:22:26 · 1186 阅读 · 0 评论 -
百度地图API入门3-一些基本概念
在使用百度地图JavaScript API服务时,需使用百度BD09坐标,如使用其他坐标( WGS84、GCJ02)进行展示,需先将其他坐标转换为BD09,详细说明请参考坐标转换说明,请勿使用非官方的转换方法。目前国内主要有以下三种坐标系:WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。GCJ02:又称火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd.原创 2020-09-24 11:45:10 · 582 阅读 · 0 评论 -
百度地图API入门2-创建一个简单的百度地图
有了baidu key,我们就可以做应用了。第一个demo代码如下:<!DOCTYPE html> <!-- HTML 5声明 --><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- 编码格式声明 --> <meta name="vi原创 2020-09-24 11:02:13 · 420 阅读 · 0 评论 -
百度地图API入门1-申请百度API key
百度地图提供了免费的接口,供开发者将百度地图嵌入到自己的web应用,PC端应用等。当然google地图,高德地图,腾讯地图等很多地图也可以用,差别较小。开始学习本教程前,你需要在百度地图开放平台上申请一个指定的API key。通过以下步骤我们可以免费获取 API key 。访问 http://lbsyun.baidu.com/ ,通过一个百度账号进行登录(没有则注册一个),然后创建应用如下:这样就获得了一个api key了。...原创 2020-09-24 10:22:26 · 7029 阅读 · 0 评论 -
QT5入门之26 -QLabel
QLabel标签控件,比较常用。1. 定义在<QLabel>中。QLabel的功能就是显示文字或者图片,没有用户交互功能。 1)设置文字很简单:ui->label->setText("test\ntest"); 2) 设置图片: ui->lblPic->setScaledContents(true);//设置自动拉伸 ui-&...原创 2015-10-30 17:48:40 · 2786 阅读 · 0 评论 -
QT5入门之12 - QDebug输出调试信息
这个很简单,二步即可。 1.添加头文件#include 2.输出信息qDebug("Test:%d",id); (%d表示整数) QDateTime time = QDateTime::currentDateTime(); QString str = time.toString("yyyy-MM-dd hh:mm:ss "); qDebug() str;原创 2015-10-15 18:05:43 · 32725 阅读 · 1 评论 -
QT5入门之8 - 定时器
新建项目Qt Widgets Application。 在构造函数中启动定时器#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWi原创 2015-10-15 15:24:47 · 4388 阅读 · 0 评论 -
QT5入门之6 - Qt提示对话框
QT 提示对话框类型很多,有提示、警告、错误、询问、关于等。最简单的: QMessageBox::warning (this,tr(“提示信息”),tr(“数据超范围。”));void about ( QWidget * parent, const QString & title, const QString & text ) StandardButton critical原创 2015-10-15 11:50:12 · 7567 阅读 · 0 评论 -
QT5入门之23 -QT串口编程
QT5有专门的串口类: QSerialPort:提供访问串口的功能 QSerialPortInfo:提供系统中存在的串口的信息 具体使用方法: 1.在pro文件中加入: QT += serialport2.mainwindow.h中添加头文件及成员:#include #include public: QSerialPort serial;//串口实例原创 2015-10-27 18:07:34 · 13752 阅读 · 4 评论 -
relocation error libQt5serialport.so.5
链接的库不对,需要做一个软连接。 ln -s libQt5serialport.so.5.10 libQt5serialport.so.510.1原创 2018-04-13 15:32:31 · 3081 阅读 · 0 评论 -
Qt 正则表达式
1. QRegExp exp(“ab+”); //ab,abb… QRegExp exp(“\d”); //一位数字 QRegExp exp(“[X-Zx-z]”);//xyz之间的一位(不区分大小写)。 QRegExp exp(“[2-6]”);//2-6之间的一位数字 QRegExp exp(“[0-9]{0,3}”);//(0-999) QRegExp exp(“[0-9]{0...转载 2018-05-28 14:25:06 · 1218 阅读 · 0 评论 -
Cannot open include file: 'type_traits': No such file or directory
path增加了新的环境变量引起的,qmake.exe. 删除并重启IDE即可。原创 2018-09-01 20:41:49 · 5432 阅读 · 4 评论 -
QObject.h
1, 防止头文件重复包含#ifndef QOBJECT_H#define QOBJECT_H2, 条件编译#ifndef QT_NO_QOBJECT#endif 3, 前置声明类,用于类指针或引用的声明class QEvent;class QTimerEvent;4, typedef 别名typedef QList<QObject*> QObj...原创 2018-09-07 21:09:03 · 1131 阅读 · 0 评论 -
QT 子目录项目
一个项目可以分为多个工程,一般一个主工程,包含main函数。用于主界面显示。 其他的工程就是库工程(以插件或库(动态库或静态库)形式提供)。可以多人协作开发。 主工程:TEMPLATE = app。 库工程:TEMPLATE = lib。 1, 新建项目-其他项目-子目录项目TEMPLATE = subdirsSUBDIRS += \ lib1 \ lib2 \ ...原创 2018-09-08 11:10:03 · 2840 阅读 · 0 评论 -
QTime QDate QDateTime
1,QTime 获取当前时间 QTime t=QTime::currentTime();QString str=t.toString("hh:mm:ss"); //时分秒 如:11:32:23ui-&gt;label-&gt;setText(str);2,QDate 获取当前日期QDate d = QDate::currentDate();QString str=...原创 2018-09-08 11:52:26 · 955 阅读 · 0 评论 -
QTextStream 读写文件
/*************************************** * QIODevice::ReadWrite 可读写 * QIODevice::Text 换行符生效 * QIODevice::Append 追加写入 * QFile::Truncate 表示将原文件清空 ***************************...原创 2018-09-08 12:57:08 · 15645 阅读 · 0 评论 -
QT5入门之7 - 修改程序图标
很简单 1. 新建文件icon.rc,内容为: IDI_ICON1 ICON DISCARDABLE “main.ico” //IDI_ICON1 ICON DISCARDABLE “res\main.ico” 2. 将icon.rc和main.icon 文件放到程序目录下,和.pro文件放在一起。 3. 在 pro工程文件最后添加一句原创 2015-10-15 12:20:10 · 4135 阅读 · 0 评论 -
QT5入门之5 - 确认退出对话框
#include QCloseEvent>//头文件记得添加void closeEvent(QCloseEvent *event);//头文件中声明void MainWindow::closeEvent(QCloseEvent *event){ QMessageBox::StandardButton button; button = QMessageBox::question原创 2015-10-15 11:43:17 · 12825 阅读 · 0 评论 -
QT5入门之11 - 工具栏
工具栏和菜单栏是联系在一起的。 QAction能够根据添加的位置来改变自己的样子——如果添加到菜单中,就会显示成一个菜单项;如果添加到工具条,就会显示成一个按钮。 openAction = new QAction(QIcon(":/images/open"), tr("&Open..."), this); openAction->setShortcuts(...原创 2015-10-15 17:32:00 · 1861 阅读 · 0 评论 -
QT5入门之15 - qr函数
qr是一个函数,是用于实现国际化的。setWindowTitle(tr("hello"));如果你为这个程序提供了中文翻译包(其中hello被翻译成中文”你好”),那么标题将是中文”你好”; 如果你为程序提供且使用日文翻译包,那么text1的内容将是日文。1.tr()函数是定义在QObject宏里面的,所有使用了Q_OBJECT宏的类都自动具有tr()的函数。 (只有加入了Q_OBJECT,你才原创 2015-10-27 12:31:47 · 2066 阅读 · 0 评论 -
QT5入门之21 -QT读写注册表
和读写ini文件一样,使用的也是QSettings 。 代码如下:void MainWindow::on_pushButton_7_clicked(){ QSettings settings("HKEY_CURRENT_USER\\Software\\aaa",QSettings::NativeFormat); settings.setValue("test", "11111")原创 2015-10-27 17:26:58 · 14733 阅读 · 1 评论 -
QT5入门之19 -Qt c++11 支持
很简单,在pro文件中添加即可: CONFIG += c++11原创 2015-10-27 15:16:43 · 5098 阅读 · 0 评论 -
QT5入门之19 -QT调用外部程序
很简单,用qprocess即可。#include <qprocess>void MainWindow::on_pushButton_5_clicked(){ QProcess process; // process.execute("notepad d:\qt.h");//calc,regedit... process.execute("d:\\feiq.exe");}p原创 2015-10-27 15:28:54 · 6432 阅读 · 2 评论 -
QT5入门之24 -QT 容器
和标准STL一样,QT也有很多容器。Qt 提供了顺序存储容器:QList,QLinkedList,QVector,QStack 和 QQueue。对于绝大多数应用程序,QList 是最好的选择。虽然它是基于数组实现的列表,但它提供了快速的向前添加和向后追加的操作。如果你需要链表,可以使用 QLinkedList。如果你希望所有元素占用连续地址空间,可以选择 QVector。QStack 和 QQu原创 2015-10-29 10:51:26 · 1341 阅读 · 0 评论 -
QT5入门之33-窗口数据传递
1.和MFC类似,也有模态和非模态对话框之分。 2.模态传值很简单:void MainWindow::on_pushButton_clicked(){ TestWidgetDlg dlg(this); dlg.exec(); qDebug() << dlg.getPara();}int TestWidgetDlg ::getPara(){ retu原创 2015-11-06 18:04:20 · 2971 阅读 · 0 评论 -
QT 打不开工程
打不开其他人的 工程。 Could not find qmake configuration file default. 分析文件E:/QPlot/QPlot.pro时发生错误,放弃中。 (Error while parsing file /*.pro. Giving up.)还是Google给力,找到其他人的解决方法。 I assume it will work as you expect原创 2015-11-06 15:51:20 · 17982 阅读 · 1 评论