Sine Striker
2023-12-23 087591ff0090d0417dfda10968a0411caab4a7c0
README.md
@@ -7,6 +7,19 @@
Support as many system native features as possible without requiring additional dependencies.
<!-- ## Why using QWindowKit?
Here're why `QWindowKit` is better than `FramelessHelper`:
+ Full support of Windows 11 Snap Layout
+ Most of the redundant codes and architectural flaws are eliminated, and the binary size compiled by MSVC is about 1/9 of `FramelessHelper`
+ A critical issue that moving window forces the entire window to be repainted on Windows is fixed
+ Capable to cope with WinId mutation, and `QWebEngineView` is perfectly supported
+ Simpler APIs, more detailed documentation and comments
+ A lot of bugs are fixed
Feature requests are welcome. -->
## Supported Platforms
+ Microsoft Windows
@@ -101,6 +114,8 @@
### Qt Widgets Application
#### Setup Window Agent
First, setup `WidgetWindowAgent` for your top `QWidget` instance. (Each window needs its own agent.)
```c++
@@ -114,13 +129,15 @@
}
```
You can also initialize the agent after the window constructs.
If you don't want to derive a new widget class or change the constructor, you can initialize the agent after the window constructs.
```c++
auto w = new MyWidget();
auto agent = new QWK::WidgetWindowAgent(w);
agent->setup(w);
```
#### Construct Title bar
Then, construct your title bar widget, without which the window lacks the basic interaction feature, and it's better to put it into the window's layout.
@@ -152,9 +169,20 @@
The rest region within the title bar will be regarded as the draggable area for the user to move the window.
Check [`MainWindow`](examples/mainwindow/mainwindow.cpp#L108) example to get detailed information.
#### Window Attributes (Experimental)
On Windows 11, you can use this API to enable system effects.
```c++
agent->setWindowAttribute("mica", true);
```
Available keys: `mica`, `mica-alt`, `acrylic`, `dark-mode`.
### Qt Quick Application
#### Initialization
Make sure you have registered `QWindowKit` into QtQuick:
@@ -170,6 +198,8 @@
    // ...
}
```
#### Setup Window Components
Then you can use `QWindowKit` data types and classes by importing it's URI:
@@ -193,6 +223,10 @@
You can omit the version number or use "auto" instead of "1.0" for the module URI if you are using Qt6.
#### Window Attributes (Experimental)
TODO
### Learn More
See [examples](examples) for more demo use cases. The examples have no High DPI support.