Sine Striker
2024-05-06 c06bb37630a3ca79dc1992ab25cf65455c261978
README.md
@@ -65,27 +65,13 @@
## Integrate
### Configure Options
+ `QWINDOWKIT_BUILD_DOCUMENTATIONS`
    + If you have installed `Doxygen`, you can **enable** this option so that the documentations will also be built and installed.
    + If not, you can read the comments in *qdoc* style in `cpp` files to get detailed usages of the public APIs.
+ `QWINDOWKIT_ENABLE_WINDOWS_SYSTEM_BORDERS`
    + If you don't want the system borders on Windows 10/11, you can **disable** this option.
    + If so, the Windows 10 top border issue will disappear. However, part of the client edge area will be occupied as the resizing margins.
+ `QWINDOWKIT_ENABLE_QT_WINDOW_CONTEXT`
    + If you want to use pure Qt emulated frameless implementation, you can **enable** this option.
    + If so, all system native features will be lost.
+ `QWINDOWKIT_ENABLE_STYLE_AGENT`
    + Select whether to exclude the style component by **disabling** this option according to your requirements and your Qt version.
### Build & Install
```sh
cmake -B build \
git clone --recursive https://github.com/stdware/qwindowkit
cd qwindowkit
cmake -B build -S . \
  -Dqmsetup_DIR=<dir> \ # Optional
  -DCMAKE_INSTALL_PREFIX=/path/install \
  -G "Ninja Multi-Config"
@@ -104,7 +90,7 @@
#### CMake Project
```sh
cmake -B build -DQWindowKit_DIR=/path/install/cmake/QWindowKit
cmake -B build -DQWindowKit_DIR=/path/install/lib/cmake/QWindowKit
```
```cmake
@@ -130,6 +116,21 @@
## Quick Start
### Qt Widgets Application
#### Initialization
The following initialization should be done before any widget constructs.
```cpp
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
    QGuiApplication::setAttribute(Qt::AA_DontCreateNativeWidgetSiblings)
    // ...
}
```
#### Setup Window Agent
@@ -252,6 +253,13 @@
+ QWindowKit Internals [TODO]
+ [FramelessHelper Related](docs/framelesshelper-related.md)
### Vulnerabilities
+ Once you have made the window frameless, it will not be able to switch back to the system border.
+ There must not be any internal child widget with `Qt::WA_NativeWindow` property enabled, otherwise the native features and display may be abnormal. Therefore, do not set any widget that has called `QWidget::winId()` or `QWidget::setAttribute(Qt::WA_NativeWindow)` as a descendant of a frameless window.
    + If you really need to move widgets between different windows, make sure that the widget is not a top-level window and wrap it with a frameless container.
## TODO
+ Fix 5.15 window abnormal behavior
@@ -267,8 +275,10 @@
QWindowKit is licensed under the [Apache 2.0 License](./LICENSE).
<!-- **You MUST keep a copyright notice of QWindowKit in a prominent place on your project, such as the README document and the About Dialog.**
<!--
**You MUST keep a copyright notice of QWindowKit in a prominent place on your project, such as the README document and the About Dialog.**
**You MUST NOT remove the license text from the header files and source files of QWindowKit.**
** You are NOT allowed to use the original code and screenshots of QWindowKit to promote your own project.** -->
-->