# Qt-Examples **Repository Path**: spark-framework-libs/Qt-Examples ## Basic Information - **Project Name**: Qt-Examples - **Description**: https://github.com/RealChuan/Qt-Examples - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-19 - **Last Updated**: 2024-04-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Qt的一些简单常用示例 - [简体中文](README.md) - [English](README.en.md) ## [QT实用小技巧(想到就更新) | 自由意志 (realchuan.github.io)](https://realchuan.github.io/2021/10/12/QT%E5%AE%9E%E7%94%A8%E5%B0%8F%E6%8A%80%E5%B7%A7%EF%BC%88%E6%83%B3%E5%88%B0%E5%B0%B1%E6%9B%B4%E6%96%B0%EF%BC%89/) ## [Battery](/Battery/)——电池控件
## [BatteryQuick](/BatteryQuick/)--电池控件(`QtQuick`) ## [Bootstarp](/Bootstarp/)--程序开机自启动设置和检测 1. Windows下读写注册表实现开机自启动,有两个位置可以写入; ```powershell HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run //对于所有用户 HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run // 对于当前用户 ``` 2. MacOS下拷贝plist文件到~/Library/LaunchAgents/,使用launchctl load/unload命令实现开机自启动; 3. Ubuntu下有两种方式: 1. 使用systemctl --user enable/disable命令实现开机自启动; 1. 拷贝.service和.timer文件到~/.config/systemd/user/,使用systemctl --user enable/disable命令实现开机自启动; 2. systemctl命令用于.timer文件,.timer文件用于定时执行.service文件,防止图形界面启动后,出现qxcbconnection: could not connect to display错误; 2. 把/usr/share/Application/下的.desktop文件拷贝到~/.config/autostart/下,实现开机自启动(未验证); ## [BubbleWindow](/BubbleWindow/)——气泡式对话框,也可作工具提示(ToolTip)
## [Chart](Chart/)——可视化图表绘制,参考[使用 QChart 显示实时动态曲线](https://qtdebug.com/qtbook-paint-realtime-curve-qchart/ "qtdebug/公孙二狗") 和QChart相关示例
图一二是动态曲线
图一二是动态曲线, 图二坐标轴也会动态变化
## [CheckBoxStandardItem](/CheckBoxStandardItem/)——可以勾选的StandardItem,而且根据勾选状态自动更新父节点状态或者子节点状态
## [Clock](/Clock/)——时钟
## [DashBoard](/DashBoard/)——仪表盘
## [FlowLayout](/FlowLayout/)——流式布局,来自QT示例Flow Layout Example
## [DragDrop](/DragDrop/)——简单控件拖拽,参考QT示例Drag and Drop Puzzle Example ## [HttpClient](/HttpClient/)——http客户端 ## [IconButton](/IconButton/)——支持Icon跟随状态切换的EventFilter和Button ## [ImageCarousel](/ImageCarousel/)——简易图片轮播
## [GridViewModel](/GridViewModel/)——基于QListView的自适应宫图
## [LogAsynchronous](/LogAsynchronous/)——异步日志,开辟一个线程专门往文件里写日志,前后端分离 1. 日志文件名:应用程序名(appname).时间(time,精确到秒).主机hostname.进程ID(Tid).log(.count),假如一天内写的单个日志大约接近1G,会自动加后缀(.1,.2.3...,以此类推)新建新的日志文件去写,每天0点依然会rollFile; 1. 正常文件名:LogAsynchronous.2020-04-26-20-29-03.Youth.11828.log; 2. 当日写日志接近1G,新建的文件名:LogAsynchronous.2020-04-26-20-38-55.Youth.11828.log.1; 2. 日志格式:时间(time,精确到毫秒).线程ID(Pid).日志级别(debug).打印信息(msg).文件(File).行号(Line)。 1. 比如:2020-04-26 20:38:55.818 2052 [Debug] 123456789qwertyuioplkjhgfdsa 8412789-File:(..\logAsynchronous\main.cpp) Line:(19); ## [MulClient](/MulClient/)——多线程客户端,一个线程一个客户端(怎么可以绕开系统限制,模拟百万个客户端) ## [MulServer](/MulServer/)——多线程服务端,一个线程一个客户端处理(处理实时性很高的TCP通讯) ## [NavigationProgressBar](/NavigationProgressBar/)——导航进度栏
## [PasswordLineEdit](/PasswordLineEdit/)——密码输入框
## [ProgressArc](/ProgressArc/)——圆弧进度条
## [ProgressBar](/ProgressBar/)——QProgressBar圆角替代方案
## [ReactorServer](/ReactorServer/)——多线程服务端,Reactor模式(Echo) ## [SimpleUdp](/SimpleUdp/)——简单UDP例子,广播和接收 ## [ShowInMyComputer](/ShowInMyComputer/)——在我的电脑中显示当前应用程序 防火墙白名单。 ## [SlipButton](/SlipButton/)——滑动按钮 另:更简单的实现:[有动画效果的 CheckBox](http://qtdebug.com/qtbook-animated-checkbox/);
## [SqliteWAL](/SqliteWAL/)——Sqlite WAL 模式下多线程并发写入数据库程序 ### WAL模式的优点 1. 提高了并发性:WAL模式允许多个读取器和一个写入器同时访问数据库,可以提高并发性能和性能; 2. 崩溃恢复:WAL模式在发生崩溃时确保数据库保持一致,通过在提交事务之前将所有更改刷新到日志文件来实现; 3. 改进了写入性能:WAL模式允许并发写入,可以比默认的回滚模式更好地改进写入性能; ### WAL模式的注意事项 1. WAL模式仅适用于SQLite 3.35.5+版本; 2. 增加了磁盘使用量:与回滚模式相比,WAL模式需要更多的磁盘空间,因为它在提交更改之前将所有更改都写入日志文件; 3. 读取性能较慢:在WAL模式下,读取操作不会被写入操作阻塞,如果同时进行读取和写入操作,可能导致数据不一致。 ## [TableViewModel](/TableViewModel/)——表格视图 1. 各种自定义代理 1. [ButtonDelegate](./TableViewModel/buttondelegate.h); 2. [ComboBoxDelegate](./TableViewModel/comboboxdelegate.h); 3. [ProgressBarDelegate](./TableViewModel/progressbardelegate.h); 4. [RichTextItemDelegate](./TableViewModel/richtextitemdelegate.hpp); 5. [StarDelegate](./TableViewModel/stardelegate.h)----来自Qt示例Star Delegate Example; 2. 十万级数据渲染;
## [Thread](/Thread/)——多线程例子,6种写法 ## [TreeViewModel](/TreeViewModel/)——树形视图(MVC),QtCreator源码
## [Validator](/Validator/)——加强版IntValidator(QIntValidator)和DoubleValidator(QDoubleValidator) ## [packaging](/packaging/)——打包脚本 1. [macos](/packaging/macos/)——macos qmake编译、打包dmg包脚本(`python`/`appdmg`); 2. [ubuntu](/packaging/ubuntu/)——ubuntu qmake编译、打包AppImage/deb包脚本(`linuxdeployqt-continuous-x86_64.AppImage`/`dpkg-deb`); 1. [使用root权限打开应用程序的一种方法](/packaging/ubuntu/opt/MyApp/MyApp.sh): ```shell #!/bin/sh pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /opt/MyApp/MyApp ``` 3. [windows](/packaging/windows/)——windows qmake编译、打包安装脚本(`Innosetup`); 1. `Innosetup` `signtool` ``` sha256="C:\\Program Files (x86)\\Windows Kits\\10\\bin\\10.0.18362.0\\x86\\signtool.exe" sign /f C:\\certificate\\certificate.pfx /p password /fd SHA256 /tr http://timestamp.digicert.com/scripts/timestamp.dll /td SHA256 $f ```