Battery——Battery control
BatteryQuick--battery control(QtQuick
)
Bootstarp--Auto-start settings and detection when the program is powered on
-
Reading and writing the registry under Windows enables self-starting at boot, and there are two locations where you can write;
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run //对于所有用户 HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run // 对于当前用户
-
Copy the plist file to ~/Library/LaunchAgents/ under MacOS, and use the launchctl load/unload command to achieve automatic startup at boot;
-
There are two ways under Ubuntu:
- Use the systemctl --user enable/disable command to achieve automatic startup at boot;
- Copy the .service and .timer files to ~/.config/systemd/user/, and use the systemctl --user enable/disable command to implement automatic startup at boot;
- The systemctl command is used in the .timer file, which is used to execute the .service file regularly to prevent the qxcbconnection: could not connect to display error from occurring after the graphical interface is started;
- Copy the .desktop file under /usr/share/Application/ to ~/.config/autostart/ to achieve automatic startup at boot (not verified);
- Use the systemctl --user enable/disable command to achieve automatic startup at boot;
BubbleWindow——Bubble dialog box, which can also be used as a tool tip (ToolTip)
Chart——Visual chart drawing, referenceUse QChart to display real-time dynamic curvesExamples related to QChart
CheckBoxStandardItem——StandardItem that can be checked, and the parent node status or child node status is automatically updated according to the checked status
Clock--clock
DashBoard——Dashboard
DragDrop——Simple control drag and drop, refer to the QT example Drag and Drop Puzzle Example
FlowLayout——Flow layout, from QT example Flow Layout Example
GridViewModel——Adaptive palace chart based on QListView
HttpClient——Simple HTTP client, supports JSON request and upload and download functions
IconButton——EventFilter and Button that support Icon following state switching
ImageCarousel——Simple image carousel component
LoadingIndicator——Loading indicator, supports gif animation
LogAsynchronous——Asynchronous logging, create a thread to write logs to files, and separate the front and back ends
- Log file name: application name (appname). time (time, accurate to seconds). host name. process ID (Tid). log (. count). If a single log written in a day is close to 1G, a suffix will be added automatically. (.1,.2.3..., and so on) Create a new log file to write, and rollFile will still be rolled at 0 o'clock every day;
- Normal file name: LogAsynchronous.2020-04-26-20-29-03.Youth.11828.log;
- The log written on that day was close to 1G, and the new file name was: LogAsynchronous.2020-04-26-20-38-55.Youth.11828.log.1;
- Log format: time (time, accurate to milliseconds). Thread ID (Pid). Log level (debug). Print information (msg). File (File). Line number (Line).
- For example: 2020-04-26 20:38:55.818 2052[Debug]123456789qwertyuioplkjhgfdsa 8412789-File:(..\logAsynchronous\main.cpp) Line:(19);
- Qt-App, this project also has log encapsulation, which is roughly consistent with the code of this project. Since the update frequency of the two projects may be different, it is recommended to check the log module at the same time.Qt-Applatest updates.
MulClient——Multi-threaded client, one client per thread (how to bypass system limitations and simulate millions of clients)
MulServer——Multi-threaded server, one thread and one client processing (processing TCP communication with high real-time performance)
NavigationProgressBar——Navigation progress bar
PasswordLineEdit——Password input box
ProgressArc——Arc progress bar
ProgressBar——QProgressBar rounded corner alternative
ReactorServer——Multi-threaded server, Reactor mode (Echo)
SimpleUdp——Simple UDP example, broadcast and receive
ShowInMyComputer——Show current applications in My Computer
Firewall whitelist.
SlipButton——Sliding button
Another: A simpler implementation:Animated CheckBox;
SqliteWAL——Multi-threaded concurrent writing database program in Sqlite WAL mode
- Each thread has an independent database connection (different connection name). When the thread exits, you need to actively remove the database connection, otherwise a large number of database connections will be generated;
- Under multi-threading, QMutex is still used to ensure thread safety. When reading, you can consider not using QMutex, and concurrent reading should have no impact (for writing, you can consider using QMutex);
- Improved concurrency: WAL mode allows multiple readers and one writer to access the database at the same time, which can improve concurrency performance;
- Crash recovery: WAL mode ensures that the database remains consistent in the event of a crash by flushing all changes to the log file before committing the transaction;
- WAL mode is only available in SQLite 3.35.5+ versions;
- Increased disk usage: WAL mode requires more disk space than rollback mode because it writes all changes to the log file before committing them;
- Slow read performance: Read operations are not blocked by write operations. If read and write operations are performed at the same time, data inconsistency may result.
TableViewModel——Table view
- Various custom agents
- ButtonDelegate;
- ComboBoxDelegate;
- ProgressBarDelegate;
- RichTextItemDelegate;
- StarDelegate----From Qt example Star Delegate Example;
- One hundred thousand level data rendering;