Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

一些简单常用的QT示例

License

NotificationsYou must be signed in to change notification settings

RealChuan/Qt-Examples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Battery——电池控件

BatteryQuick--电池控件(QtQuick

Bootstarp--程序开机自启动设置和检测

  1. Windows下读写注册表实现开机自启动,有两个位置可以写入;

    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——气泡式对话框,也可作工具提示(ToolTip)

Chart——可视化图表绘制,参考使用 QChart 显示实时动态曲线 和QChart相关示例

图一、二动态曲线
图二坐标轴也会滚动

CheckBoxStandardItem——可以勾选的StandardItem,而且根据勾选状态自动更新父节点状态或者子节点状态

Clock——时钟

DashBoard——仪表盘

DragDrop——简单控件拖拽,参考QT示例Drag and Drop Puzzle Example

FlowLayout——流式布局,来自QT示例Flow Layout Example

GridViewModel——基于QListView的自适应宫图

HttpClient——简单HTTP客户端,支持JSON请求和上传、下载、删除文件等功能

IconButton——支持Icon跟随状态切换的EventFilter和Button

ImageCarousel——简易图片轮播组件

LoadingIndicator——加载指示器,支持gif动画

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);
  3. Qt-App,这个项目中也有对日志的封装,与本项目的代码大致一致,由于两个项目更新频率可能不同,建议在查看日志模块时,同时检查Qt-App的最新更新。

MulClient——多线程客户端,一个线程一个客户端(怎么可以绕开系统限制,模拟百万个客户端)

MulServer——多线程服务端,一个线程一个客户端处理(处理实时性很高的TCP通讯)

NavigationProgressBar——导航进度栏

PasswordLineEdit——密码输入框

ProgressArc——圆弧进度条

ProgressBar——QProgressBar圆角替代方案

ReactorServer——多线程服务端,Reactor模式(Echo)

SimpleUdp——简单UDP例子,广播和接收

ShowInMyComputer——在我的电脑中显示当前应用程序

防火墙白名单。

SlipButton——滑动按钮

另:更简单的实现:有动画效果的 CheckBox

SqliteWAL——Sqlite WAL 模式下多线程并发写入数据库程序

  1. 每个线程拥有独立的数据库连接(不同的连接名称),线程退出需要主动移除数据库连接,不然会产生大量的数据库连接;
  2. 在多线程下,依旧使用QMutex保证线程安全,在读的时候,可以考虑不使用QMutex,并发读应该没什么影响(对于写的时候,可以考虑使用QMutex);

WAL模式的优点

  1. 提高了并发性:WAL模式允许多个读取器和一个写入器同时访问数据库,可以提高并发性能;
  2. 崩溃恢复:WAL模式在发生崩溃时确保数据库保持一致,通过在提交事务之前将所有更改刷新到日志文件来实现;

WAL模式的注意事项

  1. WAL模式仅适用于SQLite 3.35.5+版本;
  2. 增加了磁盘使用量:与回滚模式相比,WAL模式需要更多的磁盘空间,因为它在提交更改之前将所有更改都写入日志文件;
  3. 读取性能较慢:读取操作不会被写入操作阻塞,如果同时进行读取和写入操作,可能导致数据不一致。

TableViewModel——表格视图

  1. 各种自定义代理
    1. ButtonDelegate
    2. ComboBoxDelegate
    3. ProgressBarDelegate
    4. RichTextItemDelegate
    5. StarDelegate----来自Qt示例Star Delegate Example;
  2. 十万级数据渲染;

Thread——多线程例子,6种写法

TreeViewModel——树形视图(MVC),QtCreator源码

Validator——加强版IntValidator(QIntValidator)和DoubleValidator(QDoubleValidator)

packaging——打包脚本

  1. macos
    1. qmake 编译;
    2. 打包pkg和dmg包并签名(python/appdmg),具体可以参考Qt-App
  2. ubuntu
    1. qmake 编译;
    2. 打包deb包可以参考Qt-App
  3. windows
    1. qmake 编译;
    2. signtool 签名;
    3. Inno Setup打包可以参考Qt-App,签名的话可以把sign.bat中的签名脚本复制到Inno Setup工具中的Tools->Configure Sign Tools,然后在需要的文件后加上sign flags;

[8]ページ先頭

©2009-2025 Movatter.jp