| | |
| | | |
| | | 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 |
| | |
| | | |
| | | ### Qt Widgets Application |
| | | |
| | | #### Setup Window Agent |
| | | |
| | | First, setup `WidgetWindowAgent` for your top `QWidget` instance. (Each window needs its own agent.) |
| | | |
| | | ```c++ |
| | |
| | | } |
| | | ``` |
| | | |
| | | 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. |
| | | |
| | |
| | | |
| | | 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: |
| | | |
| | |
| | | // ... |
| | | } |
| | | ``` |
| | | |
| | | #### Setup Window Components |
| | | |
| | | Then you can use `QWindowKit` data types and classes by importing it's URI: |
| | | |
| | |
| | | |
| | | 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. |