pyQt 用 QThread 调用算法,解决界面卡顿
Qt+mitk 在 QGraphicsView 打开 DICOM 格式图片,就是在 QWidget 里嵌入别的进程的窗体
xxxxxxxxxx
WId wid = (WId)FindWindow(L"CalcFrame", L"计算器");
QWindow *fromWinId(WId id)
QWidget *createWindowContainer(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
解决无法运行,选择编译工具链,通过 Qt6.5 + mingw64
QThread + moveToThread,异步编程的思想
qrc 文件路径不要带中文
qwt 6.2 集成了 qwt_polar 解决编译问题,5.15.2 + MinGW64
牌九-顶牛子,解决坐标计算问题,计算 QWidget,即每张牌 的 pos
配置 mysql
xxxxxxxxxx
#my.ini 添加
[mysqld]
skip_ssl
SHOW VARIABLES LIKE '%ssl%';
use mysql;
alter user 'root'@'localhost' identified with mysql_native_password by '1234';
把 AmazonAI 集成到 Qt 界面,亚马逊棋
pyQt + QtMultimedia 把 QGraphicsEllipseItem 放在视频上方
基于 Qt 的 camera 例子改的,实现采图和传输,network multimedia multimediawidgets
飞凌嵌入式 OK5718 板子用的 Qt 5.6 for arm-gcc + ubuntu14.04,太老了
讲解 Qt Widget 的布局和 drag and drop、QListWidget、QPropertyAnimation
使用 TEMPLATE = subdirs 和 SUBDIRS 把多个工程像 Qt 那样管理起来
CMakeList.txt 可以通过 file(GLOB SRC . *.cpp) 添加所有 cpp 文件
xxxxxxxxxx
WId wid = (WId)FindWindow(L"FLTK",L"Gmsh - ");
m_window = QWindow::fromWinId(wid);
拼接和解析图像
xxxxxxxxxx
void MainWindow::processData(QString data) {
int size = 512 * 256;
char p[size];
QStringList list = data.split(" ");
for(int row=0; row<512; ++row) {
for(int col=0; col<256; ++col) {
int index = row*256 + col;
QString str = list.at(index);
int num = str.toInt();
char ch = static_cast<char>(num);
p[index] = ch;
}
}
QImage image((const uchar*)p, 256, 512, QImage::Format_Indexed8);
image.save("imagedata7.png");
}
字符编码问题,QString 里带中文,用了 GBK,全部用 QtCreator 修改为 utf-8
pyQt 一个 py 里的窗口调用另一个 py 里的窗口
OCR 识别数字,python 改 C++
QComboBox 定制化
海康手机检测门 SDK 调用
pyqt + VTK
基于LIRE搭建的图像检索 cpp client + java server
QOpenGLWidget 让渲染更平滑,主要是
xxxxxxxxxx
QCoreApplication::processEvents();
setGeometry(700, 200, 1000, 450); //会触发 paintEvent
车牌识别 easypr + opencv
XPM 图片改变颜色
client 同步函数修改异步函数,movetothread
代码中不要放入中文
解决信号没执行,因为大小写错误
Qt 单例模式
Q_GLOBAL_STATIC(Rule, rule)
QStackedWidget 使用
QFileInfoList 遍历磁盘,读写文件
网络多线程收发 QTcpSocket QTcpServer
TEMPLATE = subdirs
SUBDIRS = CollabBuilderPrj
多工程管理,子目录的创建
python 过滤几乎空白的图片,减少细胞图片处理时间,然后借助 chatgpt 转成 C++ 代码
xxxxxxxxxx
import cv2
import numpy as np
import skimage.morphology as sm
import os
import glob
import shutil
def patch_white_percent(img):
hsv = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
white_mask = cv2.inRange(hsv, np.array([0,0,221]), np.array([180,30,255]))
dst = sm.opening(white_mask, sm.disk(5))
white = sm.closing(dst, sm.disk(5))
mask1_temp = np.where(white>1, 1, 0)
percent_temp = np.sum(mask1_temp)/(mask1_temp.shape[0]*mask1_temp.shape[1])
return percent_temp
file_path = "./jpeg/"
images_path = glob.glob(os.path.join(file_path + '*.jpeg'))
for image_path in images_path:
img = cv2.imread(image_path)
percent_temp = patch_white_percent(img) * 100
print('percent_temp', image_path, percent_temp)
if (percent_temp > 75):
shutil.move(image_path, "./empty/")
打印所有 Qt 窗口的句柄
xxxxxxxxxx
qDebug() << QApplication::topLevelWidgets();
点击按钮切换中英文界面语言
vue 地图 + webengine 调试模式卡,切成 profile 模式,其实就是 release + force_debug_info
xxxxxxxxxx
C:/Qt/5.15.2/msvc2019_64/bin/qmake.exe C:\Users\Administrator\Desktop\taobao\20230527-11\QtMap.pro -spec win32-msvc "CONFIG+=qml_debug" "CONFIG+=qtquickcompiler" "CONFIG+=force_debug_info" "CONFIG+=separate_debug_info" && C:/Qt/Tools/QtCreator/bin/jom/jom.exe qmake_all
xxxxxxxxxx
curl.exe --ftp-create-dirs -u ftpuser:deptrumftp@2020 -T %1 %2
图标和窗口标题栏文字替换 使用 ResHacker替换图标
使用notepad++修改res字段实现标题栏文字替换
1个中文字符3个字节
qss 的 border-image 和 background-image 的区别 控件提升为
多工程有bug,QToolButton 按下有弹起动画
如何看一个新工程,先看 main 再看 dialog,再看信号槽,再看关键函数
遇到 Thread,先看 run 方法,再看 signals
QXlsx 库编译,最后找到 release 包,发现运行需要的依赖库和文件
Chartdirector 滚动条缩放 QChartView
webengine 设置 token
QStorageInfo 磁盘驱动器
音乐播放器
环境变量 C:\Program Files\MATLAB\R2023a\bin\win64
用户激活 C:/Program Files/MATLAB/R2023a/bin/win64/activate_matlab.exe
ubuntu16.04 + mysql5.7
sudo apt install libxcb-xinerama.so.0
sudo apt-get install g++
sudo apt-get install libx11-dev libxext-dev libxtst-dev
sudo apt-get install xlibmesa-gl-dev libglu1-mesa-dev
sudo apt-get install build-essential
sudo apt-get install libqt4-dev
VTK显示3D点云并集成到QWidget
widget3d 类的 sendCloud 函数
ros的消息队列
中缀表达式转逆波兰表达式
麒麟系统发布的软件 xcb 错误,解决方式 export LD_LIBRARY_PATH=./lib
QT exe 添加控制台 CONFIG += console,这样 freopen 才有效
mysql 改 gbk,但是 QSqlError 是 utf8,先 QString::fromUtf8(str.toLatin1())
运行时打不开mysql,可以把libmysql.dll放debug目录
xxxxxxxxxx
QTextStream in(&file); in.setCodec("UTF-8"); // 设置文件的编码格式为UTF-8*
QString line = in.readLine(); // 此时以UTF-8的方式从文件中读取内容,结果正常*
土 | 15047839 | E59C9F | 22303 | 571F |
---|---|---|---|---|
豆 | 15249798 | E8B186 | 35910 | 8C46 |
ODBC连接不上,先安装2个程序
bool MdbConnect(const QString &mdb, QSqlDatabase &db) { qDebug() << QSqlDatabase::drivers(); db = QSqlDatabase::addDatabase("QODBC"); QDateTime curDatetime = QDateTime::currentDateTime(); QString time = curDatetime.toString("yyyy_MM_dd_hh:mm:ss"); db = QSqlDatabase::addDatabase("QODBC",time); db.setDatabaseName(QString("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=E:\Admin.mdb")); if(db.open()) { return true; } else { qDebug() << db.lastError(); QMessageBox::information(nullptr, QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("连接数据库 ")+mdb+QString::fromLocal8Bit(" 失败")); return false; }
}
UTF8 使用
QMAKE_CFLAGS += /utf-8
QMAKE_CXXFLAGS += /utf-8
DEFINES -= UNICODE _UNICODE
windeployqt.exe是qt自带的打包工具,在打包qml程序时需要带上–qmldir参数,指定qml导入符号的路径,否则会出现无法启动的问题。
windeployqt xxx.exe --qmldir=D:\Qt\Qt5.9.9\5.9.9\mingw53_32\qml
--qmldir=C:\Qt\5.15.2\msvc2019_64\qml
https://blog.csdn.net/qq_43680827/article/details/123344162
Qt连接sql server
https://blog.csdn.net/weixin_36323170/article/details/129979609
dump生成 Qt+MSVC
一、首先在软件项目pro文件中添加:
LIBS += -lDbgHelp
二、main.cpp文件中添加
xxxxxxxxxx
LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException)
{
// 在软件运行目录下创建Dump文件夹,并将dmp文件输入到该文件夹下
QDateTime dateTime = QDateTime::currentDateTime();
QString appPath = QApplication::applicationDirPath();
QString dmpDir = appPath + "/Dump";
QDir dir;
if(!dir.exists(dmpDir))
{
dir.mkdir(dmpDir);
}
QString fileName = dmpDir + "/Crash_" + dateTime.toString("yyyyMMddhhmmss") + ".dmp";
HANDLE hDumpFile = CreateFile((LPCTSTR)fileName.utf16(), GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
if (hDumpFile != INVALID_HANDLE_VALUE) {
// Dump信息
MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
dumpInfo.ExceptionPointers = pException;
dumpInfo.ThreadId = GetCurrentThreadId();
dumpInfo.ClientPointers = TRUE;
// 写入Dump文件
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, nullptr, nullptr);
CloseHandle(hDumpFile);
}
// 返回异常代码
return EXCEPTION_EXECUTE_HANDLER;
}
int main(int argc, char *argv[])
{
// 设置异常处理函数
SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);
QApplication a(argc, argv);
MainWindow w;
w.show();
qDebug() << "Before crash.";
//添加崩溃
int *p = nullptr;
*p = 0;
qDebug() << "After crash.";
return a.exec();
}
Qt自适应高分辨率(DPI)
在 main.cpp 最开始加入以下语句:
xxxxxxxxxx
QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
树莓派ArmV8,VNC设置
/usr/bin/vncserver-virtual -depth 24 -geometry 1920x1080 :1
MacOS mysql 不要用相对路径,因为默认程序.app路径是个目录
查找dll的导出函数
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\dumpbin.exe" /exports untitled6.dll
编译显示红色条,却不提示错误 编译输出显示如下 进程“D:\QT\Tools\QtCreator\bin\jom.exe”退出,退出代码2
从网上搜了好多版本,都说是把工具->选项->构建和运行中的使用jom代替nmake勾选掉重新编译,尝试之后发现仍然未解决。
最终发现是Resources文件夹ImageIco中添加的图片有一个丢失了,导致编译错误。
VS2015
https://pan.baidu.com/s/1udgnqIgqkvBZx2u-JUAcrg?pwd=ae6f
在Win7或Win10上,安装VS2015时,有时报"安装包丢失或损坏"错误。出现这种错误的原因是当前的系统上缺少了2个证书,把这个2证书安装后,再安装或修复VS2015即可。步骤如下:
1、跳过包 当出现"安装包丢失或损坏"报错时,请点击【跳过包】,然后一路默认,直到安装完成。每次出现报错,请都选择【跳过包】
2、安装2个证书 双击.cer文件,即可安装证书
3、修复缺失的包 打开VS2015安装 --》修复 --》一路默认,即可安装之前丢失的包。
【环境变量】
【VS140COMNTOOLS】C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\
【QT_QPA_PLATFORM_PLUGIN_PATH】C:\Qt\5.15.2\msvc2019_64\plugins\platforms
【Qt5_DIR】C:\Qt\5.15.2\msvc2019_64
快速用cmd打开环境变量设置页面 因为有时候经常要设置,每次都要打开我的电脑,然后右键
习惯用键盘操作的我们肯定想要用代码操作
win+r 输入 sysdm.cpl
你在 anaconda 下的 powershell下 cd 到heat 目录,输入
pyinstaller -F -p heat.py -p func.py --hidden-import openpyxl.cell._writer Structure-phenotype.py
把logo.ico myplota.svg cover_image.tif Graphical.tif 复制到exe 下,再运行exe
pyinstaller -D inference_flask.py --hidden-import mmcv --hidden-import mmcv._ext
xxxxxxxxxx
php artisan l5-swagger:generate
运行后端
xxxxxxxxxx
pnpm dev
运行前端
xxxxxxxxxx
php artisan serve --host=0.0.0.0 --port=8001
阿里云用的 wu15721454115@163.com 的安全策略
fdisk -l 找到新接入的硬盘,通常是/dev/sda+一个序号(第一块硬盘则直接是/dev/sda) sudo mkfs.ext4 /dev/sda 硬盘文件系统格式化为ext4 sudo mount /dev/sda /home/wu/pi 将硬盘挂载到 /home/wu/pi 目录下。 df -h 即可看到新挂载的硬盘对应的目录信息 配置开机自动挂载(如果不配置,系统重启后上述配置会失效) sudo nano /etc/fstab 添加一行: /dev/sda /home/wu/pi defaults 0 0 然后 sudo reboot
1、在键盘上按快捷键【WIN+R】 或者鼠标右击桌面左下角Windows图标,选择【运行】弹出运行窗口。
2、输入【gpedit.msc】,然后点击【确定】,打开【本地组策略编辑器】
3、在【本地组策略编辑器】-【计算机配置】中依次打开【管理模板】、【Windows组件】、【Microsoft Defender防病毒】
4、在【Microsoft Defender防病毒】中双击【关闭Microsoft Defender防病毒】。
5、选择【已启用】,点击【应用】,然后点击【确定】。
6、然后双击【允许反恶意软件服务始终保持运行状态】。
7、选择【已禁用】,点击【应用】,然后点击【确定】。
8、双击【实时保护】。
10、选择【已启用】,点击【应用】,然后点击【确定】。
11、双击【扫描所有下载文件和附件】。
12、选择【已禁用】,点击【应用】,然后点击【确定】。
13、点击【开始菜单】,然后点击【设置】。
14、点击【更新和安全】。
15、打开【病毒和威胁防护】。
16、打开【管理设置】。
17、把这四项全部关闭,这里一定要关闭,不然前面设置的没用。
18、鼠标右击任务栏,点击【任务管理器】,点击【启动】,选中【windows...】,鼠标右击点击【禁用】。
设置完成后,重启电脑
一,创建虚拟机之前的优化
主页 > 编辑 > 首选项
首选项 > 内存
3.首选项 > 优先级
二,创建虚拟机的优化
首先,需要创建好一个虚拟机,如何创建虚拟机?
点击创建好了的虚拟机 > 编辑虚拟机设置
虚拟机设置 > 选项 > 高级
虚拟机设置 > 硬件 > 声卡&打印机 移除
三,启动虚拟机
系统安装好后,一定要安装 VMware Tool,否则系统会特别卡
虚拟机 > VMware Tools > 双击
下一步
选择完整安装
安装
安装完成过后,分辨率就会自动调整,并且可以直接从桌面拖动文件到虚拟机
四,可能遇到的问题
解决:按 下键, 选择第二个,连续按几下
This may happen if
'Synaptic Package Manager' or 'Software Updater' is open.
Some apt command is running in Terminal.
Some apt process is running in background.
For above wait for the process to complete. If this does not happen run in terminal:
xxxxxxxxxx
sudo killall apt apt-get
If none of the above works, remove the lock files. Run in terminal: (Note that this can seriously break your system.)
xxxxxxxxxx
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*
then reconfigure the packages. Run in terminal:
xxxxxxxxxx
sudo dpkg --configure -a
and
xxxxxxxxxx
sudo apt update
That should do the job.
1.每次启动打开多个项目,速度很慢。改为每次启动询问打开哪个单一项目 Setting -> Appearance & Behavior -> System Settings -> Project -> 关闭Reopen projects on startop
2.一直显示《正在关闭项目closing project》,关不上 pycharm 主页 Help -> Find Action -> 输入 Registry -> 禁用 ide.await.scope.completion
3.Downloading pre-built shared indexes 很慢 pycharm 为了降低生成索引所带来的 cpu 消耗,所以提供了下载索引,但是网络问题起了反效果。而开发的电脑通常能承受这点 cpu 消耗。所以我们关闭这项功能即可 Files -> settings -> Tools -> Shared Indexes -> Public Shared Indexes ->Don’t download,use local indexes
https://github.com/NOMADxzy/basicKVSR
python -m venv test_env
cd test_env\Scripts
activate
pip list
python.exe -m pip install --upgrade pip
pip install opencv-python
pip install matplotlib
pip install keras
pip install tensorflow
pip install scipy
pip install scikit-learn
pip install pyinstaller
pyinstaller -F qt.py
树莓派IP
ping raspberrypi.local
You need to set the value of upload_max_filesize and post_max_size in your php.ini :
; Maximum allowed size for uploaded files. upload_max_filesize = 64M
; Must be greater than or equal to upload_max_filesize post_max_size = 64M
After modifying php.ini file(s), you need to restart your HTTP server to use new configuration.
You may also increase the size using .htaccess in php
xxxxxxxxxx
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300
XmlModel
export LD_LIBRARY_PATH=pwd
/lib
export QT_PLUGIN_PATH=pwd
/plugins
export QML2_IMPORT_PATH=pwd
/qml
./MyApp
意外关闭了 QtCreator 的菜单栏
重新恢复按 Ctrl+Alt+M
编译Qt WebEngine msvc 2017 x64
%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
qmake -- -webengine-proprietary-codecs
cd C:\Qt\5.15.1\Src\qtwebengine
SET PATH=C:\Python27;C:\Qt\5.15.1\Src\gnuwin32\bin;%PATH%
更新 PHP Swagger Api文档
php artisan l5-swagger:generate
Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isn't set
意思是忘记删 .qmake.stage 文件了,从 mingw 切换 msvc 的报错
openssl.exe link 报错
Windows: #pragma comment(lib, "user32.lib") #pragma comment(lib, "gdi32.lib") #pragma comment(lib, "advapi32.lib")
错误 1 error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 __tmainCRTStartup 中被引用 c:\Users\administrator\documents\visual studio 2013\Projects\Win32Project1\Win32Project1\MSVCRTD.lib(crtexew.obj) Win32Project1
系统环境变量添加
xxxxxxxxxx
C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64
pro文件
xxxxxxxxxx
QT += core gui widgets axcontainer
CONFIG += c++17
SOURCES += \
main.cpp \
mainwindow.cpp \
stk.cpp
HEADERS += \
mainwindow.h \
stk.h
FORMS += \
mainwindow.ui
QMAKE_CFLAGS += /utf-8
QMAKE_CXXFLAGS += /utf-8
INCLUDEPATH += "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\ucrt"
INCLUDEPATH += "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um"
INCLUDEPATH += "C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt"
INCLUDEPATH += "C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared"
LIBS += -L"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0\ucrt\x64"
LIBS += -L"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0\um\x64"
服务器post支持最大长度修改
/etc/nginx/nginx.conf
http { client_max_body_size 20m; client_body_buffer_size 20m; }
php.ini(cli目录、fpm目录两者都得改)
post_max_size=20M upload_max_filesize=20M
Android file:///C:/Qt/Docs/Qt-6.8.0/qtdoc/android-getting-started.html
xxxxxxxxxx
https://adoptium.net/
https://github.com/android/ndk/releases
Windows: C:\Users\<USER>\AppData\Local\Android\Sdk\
sdkmanager "platform-tools" "platforms;android-33" "build-tools;34.0.0"
sdkmanager "ndk;26.1.10909125"
sdkmanager "emulator" "patcher;v4"
sdkmanager.bat "extras;google;usb_driver"
xxxxxxxxxx
reg delete HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\YunShellExt /f
reg delete HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\YunShellExt /f
pause
sql 查询时,table 字段可以加 单引号 也可以不加
GEC6818开发板 arm-v7
/SATA存储12/交叉编译/
./configure -opensource -confirm-license -release -strip -shared -xplatform linux-arm-gnueabi-g++ -make examples -nomake tools -nomake tests -widgets -dbus-runtime --pcre=qt --zlib=qt -no-openssl --freetype=qt --harfbuzz=qt -no-opengl --xcb=no --libpng=qt --libjpeg=qt --sqlite=qt -plugin-sql-sqlite -gif -ico -recheck-all
交叉编译工具链下载
https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/
https://dev.t-firefly.com/thread-100142-1-1.html
RK3288 交叉编译
./configure -opensource -confirm-license -release -strip -shared -xplatform linux-arm-gnueabi-g++ -make examples -nomake tools -nomake tests -widgets -dbus-runtime --pcre=qt --zlib=qt -no-openssl --freetype=qt --harfbuzz=qt -no-opengl --xcb=no --libpng=qt --libjpeg=qt --sqlite=qt -plugin-sql-sqlite -gif -ico -recheck-all
./configure -opensource -debug -confirm-license -xplatform linux-arm-gnueabi-g++ -no-opengl -no-pch -shared -no-iconv -no-xcb
VC版本号 | VS对应版本 | CMake设置 |
---|---|---|
MSVC++ 4.x | _MSC_VER == 1000 | |
MSVC++ 5.0 | _MSC_VER == 1100 | |
vc6 | VC6.0 | _MSC_VER == 1200 |
vc7 | VS2002 Visual studio.net | _MSC_VER == 1300 |
vc7.1 | Visual studio 2003 | _MSC_VER == 1310 |
vc8 | Visual studio 2005 | _MSC_VER == 1400 |
vc9 | Visual studio 2008 | _MSC_VER == 1500 |
vc10 | Visual studio 2010 | _MSC_VER == 1600 |
vc11 | Visual studio 2012 | _MSC_VER == 1700 |
vc12 | Visual studio 2013 | _MSC_VER == 1800 |
vc13 | VS2014 | |
vc14 MSVC++ 14.0 | Visual studio 2015 | _MSC_VER == 1900 |
vc15 MSVC++ 14.1 | Visual studio 2017 | _MSC_VER == 1911 |
vc16 MSVC++ 14.2 | Visual studio 2019 (估计微软会这么来的:VC14.20, 21, 22, 23, ...etc) |
管理员模式打开cmd,输入 sc delete AlibabaProtect 回车,删除AlibabaProtect服务,得到成功的提示。
重启电脑,任务管理器中alibabaprotect进程和服务已经消失。
然后进入C:\Program Files (x86)目录,删除AlibabaProtect整个目录。
删除休眠文件 hiberfil.sys
xxxxxxxxxx
powercfg /hibernate off
关闭UAC
C:\WINDOWS\System32\UserAccountControlSettings.exe
xxxxxxxxxx
SET _ROOT=C:\Qt\5.15.1\Src
SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%
SET PATH=C:\Python27;C:\Python27\Scripts;%PATH%
SET _ROOT=
C:\Qt\5.15.1\Src\configure.bat -debug-and-release -webengine-proprietary-codecs -c++std c++17 -nomake examples -nomake tests -opensource -confirm-license -I C:\Qt\Tools\OpenSSL\Win_x64\include -L C:\Qt\Tools\OpenSSL\Win_x64\lib -recheck-all
在基于Ubuntu和基于Debian的Linux发行版上,运行以下命令来安装ifconfig:
sudo apt install net-tools -y
ServiceDiscoveryServerServiceClassID_UUID = '{00001000-0000-1000-8000-00805F9B34FB}'
BrowseGroupDescriptorServiceClassID_UUID = '{00001001-0000-1000-8000-00805F9B34FB}'
PublicBrowseGroupServiceClass_UUID = '{00001002-0000-1000-8000-00805F9B34FB}'
#蓝牙串口服务
SerialPortServiceClass_UUID = '{00001101-0000-1000-8000-00805F9B34FB}'
LANAccessUsingPPPServiceClass_UUID = '{00001102-0000-1000-8000-00805F9B34FB}'
#拨号网络服务
DialupNetworkingServiceClass_UUID = '{00001103-0000-1000-8000-00805F9B34FB}'
#信息同步服务
IrMCSyncServiceClass_UUID = '{00001104-0000-1000-8000-00805F9B34FB}'
SDP_OBEXObjectPushServiceClass_UUID = '{00001105-0000-1000-8000-00805F9B34FB}'
#文件传输服务
OBEXFileTransferServiceClass_UUID = '{00001106-0000-1000-8000-00805F9B34FB}'
IrMCSyncCommandServiceClass_UUID = '{00001107-0000-1000-8000-00805F9B34FB}'
SDP_HeadsetServiceClass_UUID = '{00001108-0000-1000-8000-00805F9B34FB}'
CordlessTelephonyServiceClass_UUID = '{00001109-0000-1000-8000-00805F9B34FB}'
SDP_AudioSourceServiceClass_UUID = '{0000110A-0000-1000-8000-00805F9B34FB}'
SDP_AudioSinkServiceClass_UUID = '{0000110B-0000-1000-8000-00805F9B34FB}'
SDP_AVRemoteControlTargetServiceClass_UUID = '{0000110C-0000-1000-8000-00805F9B34FB}'
SDP_AdvancedAudioDistributionServiceClass_UUID = '{0000110D-0000-1000-8000-00805F9B34FB}'
SDP_AVRemoteControlServiceClass_UUID = '{0000110E-0000-1000-8000-00805F9B34FB}'
VideoConferencingServiceClass_UUID = '{0000110F-0000-1000-8000-00805F9B34FB}'
IntercomServiceClass_UUID = '{00001110-0000-1000-8000-00805F9B34FB}'
#蓝牙传真服务
FaxServiceClass_UUID = '{00001111-0000-1000-8000-00805F9B34FB}'
HeadsetAudioGatewayServiceClass_UUID = '{00001112-0000-1000-8000-00805F9B34FB}'
WAPServiceClass_UUID = '{00001113-0000-1000-8000-00805F9B34FB}'
WAPClientServiceClass_UUID = '{00001114-0000-1000-8000-00805F9B34FB}'
#个人局域网服务
PANUServiceClass_UUID = '{00001115-0000-1000-8000-00805F9B34FB}'
#个人局域网服务
NAPServiceClass_UUID = '{00001116-0000-1000-8000-00805F9B34FB}'
#个人局域网服务
GNServiceClass_UUID = '{00001117-0000-1000-8000-00805F9B34FB}'
DirectPrintingServiceClass_UUID = '{00001118-0000-1000-8000-00805F9B34FB}'
ReferencePrintingServiceClass_UUID = '{00001119-0000-1000-8000-00805F9B34FB}'
ImagingServiceClass_UUID = '{0000111A-0000-1000-8000-00805F9B34FB}'
ImagingResponderServiceClass_UUID = '{0000111B-0000-1000-8000-00805F9B34FB}'
ImagingAutomaticArchiveServiceClass_UUID = '{0000111C-0000-1000-8000-00805F9B34FB}'
ImagingReferenceObjectsServiceClass_UUID = '{0000111D-0000-1000-8000-00805F9B34FB}'
SDP_HandsfreeServiceClass_UUID = '{0000111E-0000-1000-8000-00805F9B34FB}'
HandsfreeAudioGatewayServiceClass_UUID = '{0000111F-0000-1000-8000-00805F9B34FB}'
DirectPrintingReferenceObjectsServiceClass_UUID = '{00001120-0000-1000-8000-00805F9B34FB}'
ReflectedUIServiceClass_UUID = '{00001121-0000-1000-8000-00805F9B34FB}'
BasicPringingServiceClass_UUID = '{00001122-0000-1000-8000-00805F9B34FB}'
PrintingStatusServiceClass_UUID = '{00001123-0000-1000-8000-00805F9B34FB}'
#人机输入服务
HumanInterfaceDeviceServiceClass_UUID = '{00001124-0000-1000-8000-00805F9B34FB}'
HardcopyCableReplacementServiceClass_UUID = '{00001125-0000-1000-8000-00805F9B34FB}'
#蓝牙打印服务
HCRPrintServiceClass_UUID = '{00001126-0000-1000-8000-00805F9B34FB}'
HCRScanServiceClass_UUID = '{00001127-0000-1000-8000-00805F9B34FB}'
CommonISDNAccessServiceClass_UUID = '{00001128-0000-1000-8000-00805F9B34FB}'
VideoConferencingGWServiceClass_UUID = '{00001129-0000-1000-8000-00805F9B34FB}'
UDIMTServiceClass_UUID = '{0000112A-0000-1000-8000-00805F9B34FB}'
UDITAServiceClass_UUID = '{0000112B-0000-1000-8000-00805F9B34FB}'
AudioVideoServiceClass_UUID = '{0000112C-0000-1000-8000-00805F9B34FB}'
SIMAccessServiceClass_UUID = '{0000112D-0000-1000-8000-00805F9B34FB}'
PnPInformationServiceClass_UUID = '{00001200-0000-1000-8000-00805F9B34FB}'
GenericNetworkingServiceClass_UUID = '{00001201-0000-1000-8000-00805F9B34FB}'
GenericFileTransferServiceClass_UUID = '{00001202-0000-1000-8000-00805F9B34FB}'
GenericAudioServiceClass_UUID = '{00001203-0000-1000-8000-00805F9B34FB}'
GenericTelephonyServiceClass_UUID = '{00001204-0000-1000-8000-00805F9B34FB}'
xxxxxxxxxx
# qt.conf
[Platforms]
WindowsArguments = fontengine=freetype
[Platforms]
WindowsArguments = dpiawareness=0
[Paths]
Documentation="qt/doc"
Examples="qt"
Prefix=.
Binaries=.
Headers="qt/include"
Libraries="qt/lib"
Binaries="qt/bin"
Plugins="qt/plugins"
Imports="qt/imports"
Qml2Imports=qml
Data="qt"
Translations="qt/translations"
Settings="qt"
Demos="qt"
IccFilePath="qt/icc"
[Support]
DPIAware=true
https://blog.csdn.net/su_vast/article/details/126880820
https://github.com/mltframework/shotcut
windows编译QWebEngine
Added #include <limits>
to qbytearraymatcher.h
xxxxxxxxxx
C:\Qt\5.15.2\Src\configure.bat -debug -opensource -static -static-runtime -force-debug-info -opengl dynamic -opengl desktop -platform win32-msvc -c++std c++11 -nomake examples -nomake tests -mp -confirm-license
Qt for Android访问数据库
xxxxxxxxxx
//pro
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
android
{
my_files.path = /assets
my_files.files = $$PWD/android/*
INSTALLS += my_files
}
//CPP
QFile DbFile;
QString DatabaseDataStoragePath = QStandardPaths::writableLocation(QStandardPaths::StandardLocation::AppDataLocation);
DbFile.setFileName("assets:/Poem.db");
DbFile.copy(DatabaseDataStoragePath + "/Poem.db");
QFile::setPermissions(DatabaseDataStoragePath + "/Poem.db", QFile::WriteOwner | QFile::ReadOwner);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("Poem.db");
if (!db.open()) {
QMessageBox::critical(nullptr, QObject::tr("Cannot open database"),
QObject::tr("Unable to establish a database connection.\n"
"This example needs SQLite support. Please read "
"the Qt SQL driver documentation for information how "
"to build it.\n\n"
"Click Cancel to exit."), QMessageBox::Cancel);
return false;
}
xxxxxxxxxx
mkdir qt6
cd qt6
git clone git://code.qt.io/qt/qtbase.git
git clone git://code.qt.io/qt/qtshadertools.git
git clone git://code.qt.io/qt/qtdeclarative.git
git clone git://code.qt.io/qt/qtwebengine.git
cd qtwebenigne
git submodule init
git submodule update
cd ..
git checkout origin/6.2.4
cd qtwebengine
git checkout origin/6.4.3
git submodule update
cd ..
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
SET PATH=C:\Qt\5.14.2\Src\gnuwin32\bin;%PATH%
C:\opt\qt\6.7\bin\qt-configure-module.bat ../../qtwebengine -webengine-proprietary-codecs
cmake --build . --parallel
cmake --install .
【mathutil.cpp】C:\Users\Administrator\Desktop\qtwebengine-everywhere-src-5.15.1\qtwebengine-everywhere-src-5.15.1\src\3rdparty\chromium\third_party\angle\src\common
【lab_color_space.h】C:\Users\Administrator\Desktop\qtwebengine-everywhere-src-5.15.1\qtwebengine-everywhere-src-5.15.1\src\3rdparty\chromium\third_party\blink\renderer\platform\graphics
【timestamped_trace_piece.h】C:\Users\Administrator\Desktop\qtwebengine-everywhere-src-5.15.1\qtwebengine-everywhere-src-5.15.1\src\3rdparty\chromium\third_party\perfetto\src\trace_processor
【qt5.15.1_webengine_patch.zip】C:\Qt\5.15.1\Src\qtwebengine
删除 C:\Qt\5.15.1\Src\qtwebengine 的编译缓存
PATH 环境变量C:\Python27;C:\Qt\5.15.1\Src\gnuwin32\bin;C:\Qt\5.15.1\msvc2019_64;C:\Qt\5.15.1\msvc2019_64\bin;C:\Qt\5.15.1\msvc2019_64\lib;
cd C:\Qt\5.15.1\Src\qtwebengine
qmake -- -webengine-proprietary-codecs
C:\Python27;C:\Qt\5.15.1\Src\gnuwin32\bin;C:\Qt\5.15.1\msvc2019_64;C:\Qt\5.15.1\msvc2019_64\bin;C:\Qt\5.15.1\msvc2019_64\lib;
https://doc.qt.io/qt-6/qtwebengine-platform-notes.html
Visual Studio 2019 or later, or clang-cl version 10 or later
Active Template Library (ATL), usually included in the Visual Studio installation
Windows 11 SDK version 10.0.22621.0 or later
Note: It is not recommended to use tools from msys2
or cygwin
to build Qt WebEngine as it may result in build errors.
https://doc.qt.io/qt-6/windows-building.html
https://wiki.qt.io/QtWebEngine/Qt6Build
%comspec% /k "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
https://sourceforge.net/projects/gnuwin32/files/
SET PATH=C:\GnuWin32\bin;%PATH%
(编译器文件“msc1.cpp”,第 1587 行)要解决此问题,请尝试简化或更改上面所列位置附近的程序
https://www.javaai.org/a/c892d1e98c718f2a018c7865bb870000
解决问题一,tool_wrapper.py 读取文件编码问题:
进入 qt 源码目录,找到并用任意编辑器打开上述报错的 tool_wrapper.py 文件,定为到 81 行,可以看到下面的代码:
xxxxxxxxxx
``pairs ``=` `open``(arch).read()[:``-``2``].split(``'\0'``)
调整 open 函数的参数,增加 encoding='utf-8' 参数即可解决:
xxxxxxxxxx
``pairs ``=` `open``(arch, encoding``=``'utf-8'``).read()[:``-``2``].split(``'\0'``)
解决问题2,编译子进程输出文本编码问题:
tool_wrapper.py 第 144 行是 line = line.decode('utf8'),而这里的 line 是 link 命令的输出结果,在中文版 Windows 平台,控制台输出的文本是 GBK 编码的,这里需要修改成 'gbk' 即可。
在 tool_wrapper.py 文件中,滚动条继续向下拉,找到 163 行,可以看到这里也使用了 utf8 编码来读取子程序的输出内容:
https://wiki.qt.io/QtWebEngine/Qt6Build
https://doc.qt.io/qt-6/windows-building.html
configure -webengine-proprietary-codecs
https://www.jianshu.com/p/2a42d11a2987
qemu-img create -f qcow2 D:\kylin_arm\kylindisk.qcow2 150G
qemu-system-aarch64.exe -m 32000 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios D:\kylin_arm\QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=D:\kylin_arm\kylindisk.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=D:\kylin_arm\Kylin-Server-10-SP1-Release-Build04-20200711-arm64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -net nic -net user,hostfwd=tcp::2222-:22
qemu-system-aarch64 -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios D:\kylin_arm\QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=D:\kylin_arm\arm64\kylindisk.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -net nic -net user,hostfwd=tcp::2222-:22
SCHTASKS /Change /DISABLE /TN "\Microsoft\Windows\Defrag\ScheduledDefrag"
C:\Users\Administrator>dism /online /cleanup-image /analyzecomponentstore
部署映像服务和管理工具 版本: 10.0.19041.3636
映像版本: 10.0.19045.4291
[==========================100.0%==========================]
组件存储(WinSxS)信息:
Windows 资源管理器报告的组件存储大小 : 11.50 GB
组件存储的实际大小 : 10.87 GB
xxxxxxxxxx
已与 Windows 共享 : 6.20 GB
备份和已禁用的功能 : 4.66 GB
缓存和临时数据 : 0 bytes
上次清理的日期 : 2024-05-07 05:28:53
可回收的程序包数 : 3 推荐使用组件存储清理 : 是
操作成功完成。
C:\Windows\System32\devmgmt.msc
命令 | 功能 |
---|---|
C:\Windows\System32\OptionalFeatures.exe | 启用或关闭 Windows 功能 |
rundll32.exe shell32.dll,Control_RunDLL access.cpl | 轻松使用设置中心 |
C:\Windows\System32\inetcpl.cpl ,4 | 代理设置 |
rundll32.exe shell32.dll,Control_RunDLL | 所有控制面板项 |
appwiz.cpl | 程序和应用 |
bthprops.cpl | 蓝牙和其他设备 |
desk.cpl | 屏幕 |
Firewall.cpl | Windows Defender 防火墙 |
hdwwiz.cpl | 设备管理器 |
inetcpl.cpl | Internet 属性 |
intl.cpl | 区域 |
joy.cpl | 游戏控制器 |
main.cpl | 鼠标 属性 |
mmsys.cpl | 声音 |
ncpa.cpl | 网络连接 |
powercfg.cpl | 电源选项 |
sysdm.cpl | 系统属性 |
TabletPC.cpl | 笔和触控 |
telephon.cpl | 位置信息 |
timedate.cpl | 日期和时间 |
wscui.cpl | 安全和维护 |
打开CMD 1.连接Mysql (连接方式:mysql -u 你设置的用户名 -p你设置的密码 ) 2.查看数据库:show databases;我们会看到有一个叫做"mysql"的数据库,这里我们输入use mysql 进入’mysql’数据库中
3.执行GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '你设置的密码' WITH GRANT OPTION; 注意:mysql8.0及以上版本需要使用以下语句:
create user root@'%' identified by '设置的密码'; grant all privileges on . to root@'%' with grant option; 4.刷新,FLUSH PRIVILEGES; 5.退出,此时就可以进行远程连接了。 注意:‘%’ 指所有ip都可远程连接此电脑。如果%变成ip 仅指定该ip可以远程连接至此电脑。
xxxxxxxxxx
修改本地登陆
修改密码过期规则----》永不过期
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
更新用户的密码修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
刷新权限
FLUSH PRIVILEGES;
重置密码(==非必须==)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
修改远程登陆
修改密码过期规则----》永不过期
ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
更新用户的密码修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新权限
FLUSH PRIVILEGES;
重置密码(==非必须==)
ALTER USER 'root'@'%' IDENTIFIED BY '123456';
php artisan serve --host 0.0.0.0
https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170
准备一张128128或者256256尺寸的png格式图标
打开这个图标转换网站,https://www.aconvert.com/cn/icon/png-to-ico/
RC_FILE = app.rc
IDI_ICON1 ICON "app.ico"
xxxxxxxxxx
explorer shell:::{7007ACC7-3202-11D1-AAD2-00805FC1270E}\::{8D916F34-744B-4FE8-89A4-4AB746BBCEA2}
https://blog.csdn.net/glonk/article/details/122203042
https://stackoverflow.com/questions/78468918/how-to-open-network-adapter-properties-via-windows-api
Mariadb | Mysql |
---|---|
5.1 5.2 5.3 | 5.1 |
5.5 | 5.5 |
10.0 10.1 | 5.6 |
10.2 10.3 10.4 | 5.7 |
10.4 | 8 有限代替 |
10.5 | 8 有限代替 |
10.6 10.7 10.8 10.9 10.10 | 8 |
可以认为从 10.5 开始和 mysql8 对应起来了 | 8 |
xxxxxxxxxx
cmake -G "Unix Makefiles" /Users/wangmin/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_PREFIX_PATH=/Users/wangmin/Qt/6.5.0/macos -DCMAKE_INSTALL_PREFIX=../ -DMySQL_INCLUDE_DIR="/usr/local/mysql-8.0.37-macos14-arm64/include" -DMySQL_LIBRARY="/usr/local/mysql-8.0.37-macos14-arm64/lib/libmysqlclient.dylib"
/Users/wangmin/Qt/6.5.0/macos/plugins/sqldrivers/build_sqldrivers/mysql/CMakeFiles/QMYSQLDriverPlugin.dir
/Users/wangmin/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers/mysql/CMakeFiles/QMYSQLDriverPlugin.dir
/usr/local/mysql-8.0.37-macos14-arm64
./configure -sql-mysql -- -DCMAKE_INCLUDE_PATH="/usr/local/mysql-8.0.37-macos14-arm64/include" -DCMAKE_LIBRARY_PATH="/usr/local/mysql-8.0.37-macos14-arm64/lib"
xxxxxxxxxx
3.终端配置环境
export QTDIR=/Users/wangmin/Qt/6.5.0/macos
export CMAKE_PATH=/Users/wangmin/Qt/Tools/CMake/CMake.app/Contents/bin
export NINJA_PATH=/Users/wangmin/Qt/Tools/Ninja
export PATH=$PATH:$QTDIR/bin:$CMAKE_PATH:$NINJA_PATH
4.创建目录
mkdir build-sqldrivers
cd build-sqldrivers
5.qmake
/Users/wangmin/Qt/6.5.0/macos/bin/qt-cmake -G Ninja /Users/wangmin/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/wangmin/Qt/6.5.0/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql-8.0.37-macos14-arm64/include" -DMySQL_LIBRARY="/usr/local/mysql-8.0.37-macos14-arm64/lib/libmysqlclient.dylib"
6.然后把/Users/wangmin/build-sqldrivers/build.ninja 文本编辑 里面的x86_64改成arm
7.cmake
cmake --build .
cmake --install .
8.然后把/Users/limingyuan/build-sqldrivers/plugins/sqldrivers里面的复制进/Users/limingyuan/Qt/6.5.2/macos/plugins/sqldrivers替换
完成!!!
xxxxxxxxxx
C:\anaconda3
C:\anaconda3\Scripts
C:\anaconda3\Library\bin
C:\anaconda3\Library\mingw-w64\lib
C:\anaconda3\Library\mingw-w64\bin
bullseye 代表 Debian 11 发布于 2021 年 8 月
Trusty Tahr 代表 14.04 发布于 2014 年 4 月
Xenial Xerus 代表 16.04 发布于 2016 年 4 月
Bionic Beaver 代表 Ubuntu 18.04 发布于 2018 年 4 月
Focal Fossa 代表 Ubuntu 20.04 发布于 2020 年 4 月
Jammy Jellyfish 代表 Ubuntu 22.04 发布于 2022 年 4 月
installscript.qs
修改注册表的,并且判断注册表内容来决定ifw安装程序是否继续
xxxxxxxxxx
function Component() {}
Component.prototype.createOperations = function() {
// 获取安装路径
var installPath = installer.value("TargetDir");
// 程序名称和版本
var appName = "MyApplication";
var appVersion = "1.0.0";
// 检查是否已经安装过
var regKey = "HKEY_CURRENT_USER\\HKCU\\Software\\MyCompany\\MyApplication";
var command = "Get-ItemProperty -Path Registry::" + regKey;
var commandInstalled = "(" + command + " -Name Version).Version";
var regInstalled = installer.execute("powershell", commandInstalled);
if (regInstalled) {
var isInstalled = parseInt(regInstalled) == 1;
if (isInstalled) {
var result = QMessageBox["question"]("test.quit", "Installer", "MyApplication 已经安装。安装将被取消。", QMessageBox.Ok);
if (result == QMessageBox.Ok) {
installer.setValue("FinishedText", "<font color='red' size=3>安装已退出。</font>");
installer.setDefaultPageVisible(QInstaller.TargetDirectory, false);
installer.setDefaultPageVisible(QInstaller.ReadyForInstallation, false);
installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
installer.setDefaultPageVisible(QInstaller.StartMenuSelection, false);
installer.setDefaultPageVisible(QInstaller.PerformInstallation, false);
installer.setDefaultPageVisible(QInstaller.LicenseCheck, false);
gui.clickButton(buttons.NextButton);
}
} else {
// 写入注册表
addRegistryKey("HKCU\\Software\\MyCompany\\MyApplication");
addRegistryValue("HKCU\\Software\\MyCompany\\MyApplication", "Version", appVersion);
addRegistryValue("HKCU\\Software\\MyCompany\\MyApplication", "Name", appName);
component.createOperations();
}
}
}
function addRegistryKey(key) {
installer.execute("reg", ["add", "HKEY_CURRENT_USER\\" + key]);
}
function addRegistryValue(key, name, value) {
installer.execute("reg", ["add", "HKEY_CURRENT_USER\\" + key, "/v", name, "/t", "REG_SZ", "/d", value, "/f"]);
}
用的 mysql 8.0
编译方式:
QtCreator 打开 C:\Qt\6.5.3\Src\qtbase\src\plugins\sqldrivers\CMakeLists.txt
修改 C:\Qt\6.5.3\Src\qtbase\src\plugins\sqldrivers.cmake.conf 内容为
xxxxxxxxxx
set(QT_REPO_MODULE_VERSION "6.5.3")
SET(FEATURE_sql_mysql ON)
SET(MySQL_INCLUDE_DIR "C:/tmp/include")
SET(MySQL_LIBRARY "C:/tmp/lib/libmysql.lib")
点击编译按钮
C:/tmp/include 和 C:/tmp/lib 两个目录是我自己创建的
来自 C:\Program Files\MySQL\MySQL Server 8.0 下的 include 和 lib
内核版本 5.4 更常见于 Ubuntu 20.04 LTS。
Ubuntu 22.04 LTS 默认使用 更高版本的内核(如5.15或更高)。
xxxxxxxxxx
sudo apt-get install -y qtbase5-dev qtchooser
sudo apt-get install -y qt5-qmake qtbase5-dev-tools
sudo apt-get install -y qtcreator
sudo apt-get install -y qtdeclarative5-dev
sudo du -sh 查看文件夹大小
xxxxxxxxxx
if [ -z "$1" ]; then
echo "Usage: $0 <path-to-executable>"
exit 1
fi
EXECUTABLE=$(realpath "$1")
DEST_DIR="deploy"
LIB_DIR="$DEST_DIR/libs"
if [ ! -f "$EXECUTABLE" ]; then
echo "Error: File '$EXECUTABLE' not found!"
exit 1
fi
mkdir -p "$LIB_DIR"
echo "Analyzing dependencies for: $EXECUTABLE"
ldd "$EXECUTABLE" | grep "=>" | awk '{print $3}' | while read -r lib; do
if [ -f "$lib" ]; then
echo "Copying $lib to $LIB_DIR"
cp -u "$lib" "$LIB_DIR"
else
echo "Warning: Could not find library $lib"
fi
done
cp "$EXECUTABLE" "$DEST_DIR"
echo "Deployment completed. Run the executable with:"
echo "LD_LIBRARY_PATH=\$ORIGIN/libs ./$(basename "$EXECUTABLE")"
运行脚本 start.sh
xxxxxxxxxx
export LD_LIBRARY_PATH=./libs
export QT_PLUGIN_PATH=./plugins
./your_executable
MaintenanceTool.exe --mirror http://mirrors.ustc.edu.cn/qtproject
sudo rsync -avz --delete wu@raspberrypi:/lib /home/wu/sysroot/ sudo rsync -avz --delete wu@raspberrypi:/usr/include /home/wu/sysroot/usr/ sudo rsync -avz --delete wu@raspberrypi:/usr/lib /home/wu/sysroot/usr/ sudo rsync -avz --delete wu@raspberrypi:/opt /home/wu/sysroot/
原因:C++头文件循环引用了
TBB 和 Qt 的关键字冲突,tbb 有 emit 关键字
xxxxxxxxxx
add_compile_definitions(QT_NO_KEYWORDS)
add_compile_definitions(TBB_SUPPRESS_DEPRECATED_MESSAGES=0)
QMake的话,禁用关键字
xxxxxxxxxx
CONFIG += no_keywords
需求:将软件处理的结果保存为一个报告文档,文档中包含表格、图片、文字,格式为word的.doc和.pdf。生成word是为了便于用户编辑。
开发环境:qt4.8.4+vs2010
在qt的官网上对于pdf的操作介绍如下:http://qt-project.org/wiki/Handling_PDF 。即通过QPrinter类来创建pdf;还有通过第三方库PoDoFo、Hummus。本文主要介绍的是用QPrinter类来创建pdf。
在qt的官网上对于word的操作介绍如下:http://qt-project.org/wiki/Handling_Microsoft_Word_file_format 。即通过Word本身COM组件的形式,Qt的ActiveX框架来实现;还有通过xml来实现。本文主要介绍Qt ActiveX和html格式生成word文档。
下面举例详细说明pdf和word文档的生成:
1.pdf的生成
pdf文档里要求有表格、图片、文字,参考博客:http://blog.sina.com.cn/s/blog_a6fb6cc90101gvnx.html。里面有介绍文字、图片、表格分别是怎样通过QPrinter类来实现的。但是遇到一个麻烦就是怎样把这三种格式的东西放在一起而且排版好呢,用上述博客里的方法尝试之后,最终确定使用第三种生成表格(html格式)的方式来得到:
xxxxxxxxxx
QPrinter printer_text;
printer_text.setOutputFormat(QPrinter::PdfFormat);
printer_text.setOutputFileName(pdfname);//pdfname为要保存的pdf文件名
QTextDocument text_document;
QString html = GeneratePicWord();//自定义的函数,用来生成html代码
text_document.setHtml(html);
text_document.print(&printer_text);
QTextBlock it = text_document.end();
GeneratePicWord()函数的内容大致如下:
xxxxxxxxxx
QString html;
//文字部分
QDateTime current_date_time = QDateTime::currentDateTime();
QString current_date = current_date_time.toString("yyyy-MM-dd hh:mm:ss ddd");
html += "<h2 align=\"center\">育种管理模块</h2>";
html += "<h4 align=\"center\">" + current_date + "</h2><br>";
//图片部分
html += "<img align=\"middle\" src = \"" + imagepath + "\" width=\"600\" height=\""+QString::number(showHeight) + "\"/><br>" ;
//表格部分
html += "<table align=\"center\" border=\"0.2\" cellspacing=\"0\" cellpadding=\"0\" style=\"width: 100%; height: 100%;\">";
html +="<tr>";
QString fieldname;
for ( int i = 0; i < fieldCount; ++i)
{
fieldname = fields[i].name();
html +="<td bgcolor=\"Silver\">" + fieldname + "</td>";
}
html +="</tr></table>";
最后结果得到的pdf如图:
2.word的生成
word的生成可以用QActiveX来实现。博客:http://www.360doc.com/content/14/0227/16/7918060_356177077.shtml里说的比较详细了。首先新建一个模板文件Id.dot,在模板文件中事先“插入”-》“书签”,如下图所示:
书签主要在表格的第一行前两列,分别是code,ndvi。表格下面有两个书签,分别是pic,pic2。用代码插入需要的文字和图片:
xxxxxxxxxx
QAxWidget *word = new QAxWidget("Word.Application",this, Qt::MSWindowsOwnDC);
word->setProperty("Visible", true);
//get all documents
QAxObject *documents = word->querySubObject("Documents");
//build a tempetate with .dot file
documents->dynamicCall("Add(QString)", QString::fromLocal8Bit("F:/Id.dot"));
//get the current actived document
QAxObject *document = word->querySubObject("ActiveDocument");
QString code = "code";
QAxObject *bookmark_code = document->querySubObject("Bookmarks(QVariant)", "code");
if ( !bookmark_code->isNull())
{
bookmark_code->dynamicCall("Select(void)");
bookmark_code->querySubObject("Range")->setProperty("Text", "textg");
}
QAxObject *bookmark_ndvi = document->querySubObject("Bookmarks(QVariant)", "ndvi");
if ( !bookmark_ndvi->isNull())
{
bookmark_ndvi->dynamicCall("Select(void)");
bookmark_ndvi->querySubObject("Range")->setProperty("Text", "ndvi");
}
QAxObject *bookmark_ndvi2 = document->querySubObject("Bookmarks(QVariant)", "ndvi");
if ( !bookmark_ndvi2->isNull())
{
bookmark_ndvi2->dynamicCall("Select(void)");
bookmark_ndvi2->querySubObject("Range")->setProperty("Text", "ndvi2");
}
QAxObject *bookmark_pic = document->querySubObject("Bookmarks(QVariant)", "pic");
if ( !bookmark_pic->isNull())
{
bookmark_pic->dynamicCall("Select(void)");
QAxObject *shapes = document->querySubObject("InlineShapes");
shapes->dynamicCall("AddPicture(Const QString&)", "F:\\CND.jpg");
}
document->dynamicCall("SaveAs (const QString&)", QString("F:/testword.doc"));
document->dynamicCall("Close(boolean)", false);
word->dynamicCall("Quit()");
得到的结果就不贴了。存在有两个问题:1.在生成的word里图片的大小非常小,需要人为把它拉大才看得到;2.表格数据只会插入到第一行已经预设好书签的位置。对于有多条数据,还不知道怎样动 态创建 书签来插入数据。在网上找了些资料,未能很好的通过模板书签的方式来解决这两个问题。 那么想通过上面生成pdf时的html能不能直接保存为.doc文件呢?答案是能!而且节约了很多时间,只需一次生成固定格式的html,就可以保存为pdf和doc文件,多好的事情啊,为什么要用Qt ActiveX呢。
当然不能直接把生成pdf的文件名改成doc就行了,还需要做下面一个事情:
xxxxxxxxxx
QString html;
html += "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:w=\"urn:schemas-microsoft-com:office:word\" xmlns=\"http://www.w3.org/TR/REC-html40\"><head><meta http-equiv=Content-Type content=\"text/html; charset=gb2312\" >"; //这句可加可不加。主要是因为我在word里把doc另存为html文件后,看到有这么个头标签,由此想到直接将html文档保存为doc文件。
html =GeneratePicWord();//该函数同生产pdf文档的一样
QFile outFile(docname);
outFile.open(QIODevice::WriteOnly | QIODevice::Append );
QTextStream ts(&outFile);
ts<<html<<endl;
主要在后面那4行,将html输出到doc文件中去。 得到的结果如图:
pdf和word的生成就完成了,具体得到的结果可能格式上还需要调整,html对于调格式还是很方便的。
xxxxxxxxxx
https://code.videolan.org/videolan/vlc/-/tree/3.0.13?ref_type=tags
git clone git://github.com/vlc-qt/vlc-qt.git
git submodule init
git submodule update
#cmake .. -DCMAKE_BUILD_TYPE=Debug
export Qt5_DIR=/usr/lib/aarch64-linux-gnu/cmake/Qt5
export CMAKE_PREFIX_PATH=/usr/lib/aarch64-linux-gnu/qt5
export Qt5_QML_DIR=/usr/lib/aarch64-linux-gnu/qt5/qml
export Qt5_PLUGINS_DIR=/usr/lib/aarch64-linux-gnu/qt5/plugins
cmake -S /root/vlc-qt -B /root/vlc-qt/build -DLIBVLC_INCLUDE_DIR=/usr/include/vlc -DLIBVLC_LIBRARY=/usr/lib/aarch64-linux-gnu/libvlc.so -DLIBVLCCORE_LIBRARY=/usr/lib/aarch64-linux-gnu/libvlccore.so
xxxxxxxxxx
./configure --prefix=/home/forlinx/ffmpeg_build --enable-cross-compile --target-os=linux --cross-prefix=/home/forlinx/aarch64-buildroot-linux-gnu_sdk-buildroot/bin/ --cc=arm-linux-gnueabihf-gcc --cxx=arm-linux-gnueabihf-g++ --nm=arm-linux-gnueabihf-nm --strip=arm-linux-gnueabihf-strip --ar=arm-linux-gnueabihf-ar --ranlib=arm-linux-gnueabihf-ranlib --pkg-config=arm-linux-gueabihf-pkg-config --cpu=cortex-a7 arch=arm32 --disable-yasm --disable-x86asm --disable-static --enable-shared --enable-small --enable-ffmpeg
protoc.exe 命令使用
C:\Users\Administrator\Desktop\mingw64\server>C:\vcpkg\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe -I ./ --grpc_out=./ --plugin=protoc-gen-grpc="C:/vcpkg/vcpkg/installed/x64-windows/tools/grpc/grpc_cpp_plugin.exe" ./helloworld.proto
C:\Users\Administrator\Desktop\mingw64\server>C:\vcpkg\vcpkg\installed\x64-windows\tools\protobuf\protoc.exe -I ./ --cpp_out=./ ./helloworld.proto
查看MD5
certutil.exe -hashfile C:/Users/Administrator/Desktop/work/dianyao/testLogin/wrpc.crt MD5
QObject
在最前面xxxxxxxxxx
class Q_WIDGETS_EXPORT QGraphicsObject : public QObject, public QGraphicsItem
元对象系统要求
QObject
是 Qt 的元对象系统的基础类,提供信号与槽、动态属性等功能。
如果 QObject
不作为第一个基类,可能会导致其虚函数表(vtable)和内存布局出现问题,破坏 Qt 元对象系统的功能。
解决多继承的冲突
当多继承中涉及 QObject
和其他非 QObject
的基类(如 QGraphicsItem
),将 QObject
放在最前面可以避免二义性问题,确保 QObject
的功能正常工作。
xxxxxxxxxx
cd C:\
git clone https://github.com/microsoft/vcpkg.git
bootstrap-vcpkg.bat
.\vcpkg.exe install protobuf protobuf:x64-windows
.\vcpkg.exe install grpc:x64-windows
xxxxxxxxxx
cmake_minimum_required(VERSION 3.16)
project(testQuote VERSION 0.1 LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 REQUIRED COMPONENTS
Core
Grpc
GrpcTools
Gui
Protobuf
ProtobufQtCoreTypes
ProtobufQtGuiTypes
ProtobufTools
ProtobufWellKnownTypes
Widgets
)
qt_standard_project_setup()
qt_add_executable(testQuote
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui
vcpkg.json
)
qt_add_protobuf(testQuote PROTO_FILES proto/md.proto)
qt_add_grpc(testQuote CLIENT PROTO_FILES proto/md.proto)
target_link_libraries(testQuote PRIVATE
Qt6::Core
Qt6::Grpc
Qt6::Gui
Qt6::Protobuf
Qt6::ProtobufQtCoreTypes
Qt6::ProtobufQtGuiTypes
Qt6::ProtobufWellKnownTypes
Qt6::Widgets
)
set_target_properties(testQuote PROPERTIES WIN32_EXECUTABLE TRUE)
xxxxxxxxxx
chart->layout()->setContentsMargins(0, 0, 0, 0);//设置外边界全部为0
chart->setMargins(QMargins(0, 0, 0, 0));//设置内边界全部为0
chart->setBackgroundRoundness(0);//设置背景区域无圆角