[GH-ISSUE #157] Frameless window with aero snap functionalities support #97

Closed
opened 2026-05-05 11:04:30 -06:00 by gitea-mirror · 13 comments
Owner

Originally created by @MosiQt on GitHub (Aug 8, 2019).
Original GitHub issue: https://github.com/qmlnet/qmlnet/issues/157

I'm trying to build a frame-less qml application with having aero snap functionalities work like a normal window. So I tried this in main.qml:

ApplicationWindow {
    id: window
    width: 640
    height: 680
    visible: true
    title: "Project Management"
    flags: Qt.FramelessWindowHint | Qt.Window
}

this makes the app frameless but I can't find any solution to make the aero snap working. I have a solution in C++/Qt but I don't know how this should be handled in C#? (Stackoverflow)

Originally created by @MosiQt on GitHub (Aug 8, 2019). Original GitHub issue: https://github.com/qmlnet/qmlnet/issues/157 I'm trying to build a frame-less qml application with having aero snap functionalities work like a normal window. So I tried this in main.qml: ``` ApplicationWindow { id: window width: 640 height: 680 visible: true title: "Project Management" flags: Qt.FramelessWindowHint | Qt.Window } ``` this makes the app frameless but I can't find any solution to make the aero snap working. I have a solution in C++/Qt but I don't know how this should be handled in C#? ([Stackoverflow](https://stackoverflow.com/questions/57412432/frameless-window-with-aero-snap-functionalities-using-net-core-2-or-3-and-qml))
Author
Owner

@pauldotknopf commented on GitHub (Aug 8, 2019):

What is the solution in C++?

<!-- gh-comment-id:519563455 --> @pauldotknopf commented on GitHub (Aug 8, 2019): What is the solution in C++?
Author
Owner

@MosiQt commented on GitHub (Aug 8, 2019):

by using windows api : dwmapi.h (for example: https://github.com/deimos1877/BorderlessWindow)

<!-- gh-comment-id:519563723 --> @MosiQt commented on GitHub (Aug 8, 2019): by using windows api : dwmapi.h (for example: https://github.com/deimos1877/BorderlessWindow)
Author
Owner

@pauldotknopf commented on GitHub (Aug 8, 2019):

You could probably PInvoke Win32, but I'm not sure how'd you get the native HWND from the ApplicationWindow. You might have to subclass ApplicationWindow in a custom QML plugin that you can import and use within Qml.Net.

<!-- gh-comment-id:519564481 --> @pauldotknopf commented on GitHub (Aug 8, 2019): You could probably PInvoke Win32, but I'm not sure how'd you get the native ```HWND``` from the ```ApplicationWindow```. You might have to subclass ```ApplicationWindow``` in a custom QML plugin that you can import and use within Qml.Net.
Author
Owner

@MosiQt commented on GitHub (Aug 8, 2019):

Thanks for helping. Let me try that. I'll update the post

<!-- gh-comment-id:519565712 --> @MosiQt commented on GitHub (Aug 8, 2019): Thanks for helping. Let me try that. I'll update the post
Author
Owner

@MosiQt commented on GitHub (Aug 11, 2019):

You could probably PInvoke Win32, but I'm not sure how'd you get the native HWND from the ApplicationWindow. You might have to subclass ApplicationWindow in a custom QML plugin that you can import and use within Qml.Net.

Actually I'm confused how should I subclass ApplicationWindow in qml.net since I'm new in .Net. I'll appreciated if give me some help?

<!-- gh-comment-id:520210247 --> @MosiQt commented on GitHub (Aug 11, 2019): > You could probably PInvoke Win32, but I'm not sure how'd you get the native `HWND` from the `ApplicationWindow`. You might have to subclass `ApplicationWindow` in a custom QML plugin that you can import and use within Qml.Net. Actually I'm confused how should I subclass ApplicationWindow in qml.net since I'm new in .Net. I'll appreciated if give me some help?
Author
Owner

@pauldotknopf commented on GitHub (Aug 11, 2019):

You need to use Qt Creator and C++ to create the plugin: https://doc.qt.io/qt-5/qtqml-tutorials-extending-qml-example.html

<!-- gh-comment-id:520229314 --> @pauldotknopf commented on GitHub (Aug 11, 2019): You need to use Qt Creator and C++ to create the plugin: https://doc.qt.io/qt-5/qtqml-tutorials-extending-qml-example.html
Author
Owner

@MosiQt commented on GitHub (Aug 11, 2019):

You need to use Qt Creator and C++ to create the plugin: https://doc.qt.io/qt-5/qtqml-tutorials-extending-qml-example.html

I can do that, but my question is how to use the plugin in qml.net?

<!-- gh-comment-id:520229456 --> @MosiQt commented on GitHub (Aug 11, 2019): > You need to use Qt Creator and C++ to create the plugin: https://doc.qt.io/qt-5/qtqml-tutorials-extending-qml-example.html I can do that, but my question is how to use the plugin in qml.net?
Author
Owner

@pauldotknopf commented on GitHub (Aug 11, 2019):

Ah, when you create the plugin, you'll install it into your Qt's plugin directory.

See some existing plugins:

> tree ~/Qt/Local/qml/QtQuick/Controls.2
├── AbstractButton.qml
├── AbstractButton.qmlc
├── ActionGroup.qml
├── ActionGroup.qmlc
├── Action.qml
├── Action.qmlc
├── ApplicationWindow.qml
├── ApplicationWindow.qmlc
├── BusyIndicator.qml
├── BusyIndicator.qmlc
├── ButtonGroup.qml
├── ButtonGroup.qmlc
├── Button.qml
├── Button.qmlc
├── CheckBox.qml
├── CheckBox.qmlc
├── CheckDelegate.qml
├── CheckDelegate.qmlc
├── ComboBox.qml
├── ComboBox.qmlc
├── Container.qml
├── Container.qmlc
├── Control.qml
├── Control.qmlc
├── DelayButton.qml
├── DelayButton.qmlc
├── designer
│   ├── AbstractButtonSection.qml
│   ├── AbstractButtonSection.qmlc
│   ├── BusyIndicatorSpecifics.qml
│   ├── BusyIndicatorSpecifics.qmlc
│   ├── ButtonSection.qml
│   ├── ButtonSection.qmlc
│   ├── ButtonSpecifics.qml
│   ├── ButtonSpecifics.qmlc
│   ├── CheckBoxSpecifics.qml
│   ├── CheckBoxSpecifics.qmlc
│   ├── CheckDelegateSpecifics.qml
│   ├── CheckDelegateSpecifics.qmlc
│   ├── CheckSection.qml
│   ├── CheckSection.qmlc
│   ├── ComboBoxSpecifics.qml
│   ├── ComboBoxSpecifics.qmlc
│   ├── ContainerSection.qml
│   ├── ContainerSection.qmlc
│   ├── ControlSection.qml
│   ├── ControlSection.qmlc
│   ├── ControlSpecifics.qml
│   ├── ControlSpecifics.qmlc
│   ├── DelayButtonSpecifics.qml
│   ├── DelayButtonSpecifics.qmlc
│   ├── DialSpecifics.qml
│   ├── DialSpecifics.qmlc
│   ├── FrameSpecifics.qml
│   ├── FrameSpecifics.qmlc
│   ├── GroupBoxSpecifics.qml
│   ├── GroupBoxSpecifics.qmlc
│   ├── images
│   │   ├── busyindicator-icon16@2x.png
│   │   ├── busyindicator-icon16.png
│   │   ├── busyindicator-icon@2x.png
│   │   ├── busyindicator-icon.png
│   │   ├── button-icon16@2x.png
│   │   ├── button-icon16.png
│   │   ├── button-icon@2x.png
│   │   ├── button-icon.png
│   │   ├── checkbox-icon16@2x.png
│   │   ├── checkbox-icon16.png
│   │   ├── checkbox-icon@2x.png
│   │   ├── checkbox-icon.png
│   │   ├── combobox-icon16@2x.png
│   │   ├── combobox-icon16.png
│   │   ├── combobox-icon@2x.png
│   │   ├── combobox-icon.png
│   │   ├── delaybutton-icon16@2x.png
│   │   ├── delaybutton-icon16.png
│   │   ├── delaybutton-icon@2x.png
│   │   ├── delaybutton-icon.png
│   │   ├── dial-icon16@2x.png
│   │   ├── dial-icon16.png
│   │   ├── dial-icon@2x.png
│   │   ├── dial-icon.png
│   │   ├── frame-icon16@2x.png
│   │   ├── frame-icon16.png
│   │   ├── frame-icon@2x.png
│   │   ├── frame-icon.png
│   │   ├── groupbox-icon16@2x.png
│   │   ├── groupbox-icon16.png
│   │   ├── groupbox-icon@2x.png
│   │   ├── groupbox-icon.png
│   │   ├── itemdelegate-icon16@2x.png
│   │   ├── itemdelegate-icon16.png
│   │   ├── itemdelegate-icon@2x.png
│   │   ├── itemdelegate-icon.png
│   │   ├── label-icon16@2x.png
│   │   ├── label-icon16.png
│   │   ├── label-icon@2x.png
│   │   ├── label-icon.png
│   │   ├── page-icon16@2x.png
│   │   ├── page-icon16.png
│   │   ├── page-icon@2x.png
│   │   ├── page-icon.png
│   │   ├── pageindicator-icon16@2x.png
│   │   ├── pageindicator-icon16.png
│   │   ├── pageindicator-icon@2x.png
│   │   ├── pageindicator-icon.png
│   │   ├── pane-icon16@2x.png
│   │   ├── pane-icon16.png
│   │   ├── pane-icon@2x.png
│   │   ├── pane-icon.png
│   │   ├── placeholder-icon16@2x.png
│   │   ├── placeholder-icon16.png
│   │   ├── placeholder-icon@2x.png
│   │   ├── placeholder-icon.png
│   │   ├── progressbar-icon16@2x.png
│   │   ├── progressbar-icon16.png
│   │   ├── progressbar-icon@2x.png
│   │   ├── progressbar-icon.png
│   │   ├── radiobutton-icon16@2x.png
│   │   ├── radiobutton-icon16.png
│   │   ├── radiobutton-icon@2x.png
│   │   ├── radiobutton-icon.png
│   │   ├── rangeslider-icon16@2x.png
│   │   ├── rangeslider-icon16.png
│   │   ├── rangeslider-icon@2x.png
│   │   ├── rangeslider-icon.png
│   │   ├── roundbutton-icon16@2x.png
│   │   ├── roundbutton-icon16.png
│   │   ├── roundbutton-icon@2x.png
│   │   ├── roundbutton-icon.png
│   │   ├── scrollview-icon16.png
│   │   ├── scrollview-icon.png
│   │   ├── slider-icon16@2x.png
│   │   ├── slider-icon16.png
│   │   ├── slider-icon@2x.png
│   │   ├── slider-icon.png
│   │   ├── spinbox-icon16@2x.png
│   │   ├── spinbox-icon16.png
│   │   ├── spinbox-icon@2x.png
│   │   ├── spinbox-icon.png
│   │   ├── stackview-icon16.png
│   │   ├── stackview-icon.png
│   │   ├── swipeview-icon16.png
│   │   ├── swipeview-icon.png
│   │   ├── switch-icon16@2x.png
│   │   ├── switch-icon16.png
│   │   ├── switch-icon@2x.png
│   │   ├── switch-icon.png
│   │   ├── textarea-icon16@2x.png
│   │   ├── textarea-icon16.png
│   │   ├── textarea-icon@2x.png
│   │   ├── textarea-icon.png
│   │   ├── textfield-icon16@2x.png
│   │   ├── textfield-icon16.png
│   │   ├── textfield-icon@2x.png
│   │   ├── textfield-icon.png
│   │   ├── toolbar-icon16@2x.png
│   │   ├── toolbar-icon16.png
│   │   ├── toolbar-icon@2x.png
│   │   ├── toolbar-icon.png
│   │   ├── toolbutton-icon16@2x.png
│   │   ├── toolbutton-icon16.png
│   │   ├── toolbutton-icon@2x.png
│   │   ├── toolbutton-icon.png
│   │   ├── toolseparator-icon16@2x.png
│   │   ├── toolseparator-icon16.png
│   │   ├── toolseparator-icon@2x.png
│   │   ├── toolseparator-icon.png
│   │   ├── tumbler-icon16@2x.png
│   │   ├── tumbler-icon16.png
│   │   ├── tumbler-icon@2x.png
│   │   └── tumbler-icon.png
│   ├── ItemDelegateSection.qml
│   ├── ItemDelegateSection.qmlc
│   ├── ItemDelegateSpecifics.qml
│   ├── ItemDelegateSpecifics.qmlc
│   ├── LabelSpecifics.qml
│   ├── LabelSpecifics.qmlc
│   ├── PaddingSection.qml
│   ├── PaddingSection.qmlc
│   ├── PageIndicatorSpecifics.qml
│   ├── PageIndicatorSpecifics.qmlc
│   ├── PageSpecifics.qml
│   ├── PageSpecifics.qmlc
│   ├── PaneSection.qml
│   ├── PaneSection.qmlc
│   ├── PaneSpecifics.qml
│   ├── PaneSpecifics.qmlc
│   ├── ProgressBarSpecifics.qml
│   ├── ProgressBarSpecifics.qmlc
│   ├── qtquickcontrols2.metainfo
│   ├── RadioButtonSpecifics.qml
│   ├── RadioButtonSpecifics.qmlc
│   ├── RadioDelegateSpecifics.qml
│   ├── RadioDelegateSpecifics.qmlc
│   ├── RangeSliderSpecifics.qml
│   ├── RangeSliderSpecifics.qmlc
│   ├── RoundButtonSpecifics.qml
│   ├── RoundButtonSpecifics.qmlc
│   ├── ScrollViewSpecifics.qml
│   ├── ScrollViewSpecifics.qmlc
│   ├── SliderSpecifics.qml
│   ├── SliderSpecifics.qmlc
│   ├── SpinBoxSpecifics.qml
│   ├── SpinBoxSpecifics.qmlc
│   ├── StackViewSpecifics.qml
│   ├── StackViewSpecifics.qmlc
│   ├── SwipeDelegateSpecifics.qml
│   ├── SwipeDelegateSpecifics.qmlc
│   ├── SwipeViewSpecifics.qml
│   ├── SwipeViewSpecifics.qmlc
│   ├── SwitchDelegateSpecifics.qml
│   ├── SwitchDelegateSpecifics.qmlc
│   ├── SwitchSpecifics.qml
│   ├── SwitchSpecifics.qmlc
│   ├── TabBarSpecifics.qml
│   ├── TabBarSpecifics.qmlc
│   ├── TabButtonSpecifics.qml
│   ├── TabButtonSpecifics.qmlc
│   ├── TextAreaSpecifics.qml
│   ├── TextAreaSpecifics.qmlc
│   ├── TextFieldSpecifics.qml
│   ├── TextFieldSpecifics.qmlc
│   ├── ToolBarSpecifics.qml
│   ├── ToolBarSpecifics.qmlc
│   ├── ToolButtonSpecifics.qml
│   ├── ToolButtonSpecifics.qmlc
│   ├── ToolSeparatorSpecifics.qml
│   ├── ToolSeparatorSpecifics.qmlc
│   ├── TumblerSpecifics.qml
│   └── TumblerSpecifics.qmlc
├── DialogButtonBox.qml
├── DialogButtonBox.qmlc
├── Dialog.qml
├── Dialog.qmlc
├── Dial.qml
├── Dial.qmlc
├── Drawer.qml
├── Drawer.qmlc
├── Frame.qml
├── Frame.qmlc
├── Fusion
│   ├── ApplicationWindow.qml
│   ├── BusyIndicator.qml
│   ├── ButtonPanel.qml
│   ├── Button.qml
│   ├── CheckBox.qml
│   ├── CheckDelegate.qml
│   ├── CheckIndicator.qml
│   ├── ComboBox.qml
│   ├── DelayButton.qml
│   ├── DialogButtonBox.qml
│   ├── Dialog.qml
│   ├── Dial.qml
│   ├── Drawer.qml
│   ├── Frame.qml
│   ├── GroupBox.qml
│   ├── ItemDelegate.qml
│   ├── Label.qml
│   ├── libqtquickcontrols2fusionstyleplugin.so
│   ├── MenuBarItem.qml
│   ├── MenuBar.qml
│   ├── MenuItem.qml
│   ├── Menu.qml
│   ├── MenuSeparator.qml
│   ├── PageIndicator.qml
│   ├── Page.qml
│   ├── Pane.qml
│   ├── Popup.qml
│   ├── ProgressBar.qml
│   ├── qmldir
│   ├── RadioButton.qml
│   ├── RadioDelegate.qml
│   ├── RadioIndicator.qml
│   ├── RangeSlider.qml
│   ├── RoundButton.qml
│   ├── ScrollBar.qml
│   ├── ScrollIndicator.qml
│   ├── ScrollView.qml
│   ├── SliderGroove.qml
│   ├── SliderHandle.qml
│   ├── Slider.qml
│   ├── SpinBox.qml
│   ├── SwipeDelegate.qml
│   ├── SwitchDelegate.qml
│   ├── SwitchIndicator.qml
│   ├── Switch.qml
│   ├── TabBar.qml
│   ├── TabButton.qml
│   ├── TextArea.qml
│   ├── TextField.qml
│   ├── ToolBar.qml
│   ├── ToolButton.qml
│   ├── ToolSeparator.qml
│   ├── ToolTip.qml
│   └── Tumbler.qml
├── GroupBox.qml
├── GroupBox.qmlc
├── Imagine
│   ├── ApplicationWindow.qml
│   ├── BusyIndicator.qml
│   ├── Button.qml
│   ├── CheckBox.qml
│   ├── CheckDelegate.qml
│   ├── ComboBox.qml
│   ├── DelayButton.qml
│   ├── DialogButtonBox.qml
│   ├── Dialog.qml
│   ├── Dial.qml
│   ├── Drawer.qml
│   ├── Frame.qml
│   ├── GroupBox.qml
│   ├── ItemDelegate.qml
│   ├── Label.qml
│   ├── libqtquickcontrols2imaginestyleplugin.so
│   ├── MenuItem.qml
│   ├── Menu.qml
│   ├── MenuSeparator.qml
│   ├── PageIndicator.qml
│   ├── Page.qml
│   ├── Pane.qml
│   ├── plugins.qmltypes
│   ├── Popup.qml
│   ├── ProgressBar.qml
│   ├── qmldir
│   ├── RadioButton.qml
│   ├── RadioDelegate.qml
│   ├── RangeSlider.qml
│   ├── RoundButton.qml
│   ├── ScrollBar.qml
│   ├── ScrollIndicator.qml
│   ├── Slider.qml
│   ├── SpinBox.qml
│   ├── StackView.qml
│   ├── SwipeDelegate.qml
│   ├── SwipeView.qml
│   ├── SwitchDelegate.qml
│   ├── Switch.qml
│   ├── TabBar.qml
│   ├── TabButton.qml
│   ├── TextArea.qml
│   ├── TextField.qml
│   ├── ToolBar.qml
│   ├── ToolButton.qml
│   ├── ToolSeparator.qml
│   ├── ToolTip.qml
│   └── Tumbler.qml
├── ItemDelegate.qml
├── ItemDelegate.qmlc
├── Label.qml
├── Label.qmlc
├── libqtquickcontrols2plugin.so
├── Material
│   ├── ApplicationWindow.qml
│   ├── ApplicationWindow.qmlc
│   ├── BoxShadow.qml
│   ├── BoxShadow.qmlc
│   ├── BusyIndicator.qml
│   ├── BusyIndicator.qmlc
│   ├── Button.qml
│   ├── Button.qmlc
│   ├── CheckBox.qml
│   ├── CheckBox.qmlc
│   ├── CheckDelegate.qml
│   ├── CheckDelegate.qmlc
│   ├── CheckIndicator.qml
│   ├── CheckIndicator.qmlc
│   ├── ComboBox.qml
│   ├── ComboBox.qmlc
│   ├── CursorDelegate.qml
│   ├── CursorDelegate.qmlc
│   ├── DelayButton.qml
│   ├── DelayButton.qmlc
│   ├── DialogButtonBox.qml
│   ├── DialogButtonBox.qmlc
│   ├── Dialog.qml
│   ├── Dialog.qmlc
│   ├── Dial.qml
│   ├── Dial.qmlc
│   ├── Drawer.qml
│   ├── Drawer.qmlc
│   ├── ElevationEffect.qml
│   ├── ElevationEffect.qmlc
│   ├── Frame.qml
│   ├── Frame.qmlc
│   ├── GroupBox.qml
│   ├── GroupBox.qmlc
│   ├── ItemDelegate.qml
│   ├── ItemDelegate.qmlc
│   ├── Label.qml
│   ├── Label.qmlc
│   ├── libqtquickcontrols2materialstyleplugin.so
│   ├── MenuBarItem.qml
│   ├── MenuBarItem.qmlc
│   ├── MenuBar.qml
│   ├── MenuBar.qmlc
│   ├── MenuItem.qml
│   ├── MenuItem.qmlc
│   ├── Menu.qml
│   ├── Menu.qmlc
│   ├── MenuSeparator.qml
│   ├── MenuSeparator.qmlc
│   ├── PageIndicator.qml
│   ├── PageIndicator.qmlc
│   ├── Page.qml
│   ├── Page.qmlc
│   ├── Pane.qml
│   ├── Pane.qmlc
│   ├── plugins.qmltypes
│   ├── Popup.qml
│   ├── Popup.qmlc
│   ├── ProgressBar.qml
│   ├── ProgressBar.qmlc
│   ├── qmldir
│   ├── RadioButton.qml
│   ├── RadioButton.qmlc
│   ├── RadioDelegate.qml
│   ├── RadioDelegate.qmlc
│   ├── RadioIndicator.qml
│   ├── RadioIndicator.qmlc
│   ├── RangeSlider.qml
│   ├── RangeSlider.qmlc
│   ├── RectangularGlow.qml
│   ├── RectangularGlow.qmlc
│   ├── RoundButton.qml
│   ├── RoundButton.qmlc
│   ├── ScrollBar.qml
│   ├── ScrollBar.qmlc
│   ├── ScrollIndicator.qml
│   ├── ScrollIndicator.qmlc
│   ├── SliderHandle.qml
│   ├── SliderHandle.qmlc
│   ├── Slider.qml
│   ├── Slider.qmlc
│   ├── SpinBox.qml
│   ├── SpinBox.qmlc
│   ├── StackView.qml
│   ├── StackView.qmlc
│   ├── SwipeDelegate.qml
│   ├── SwipeDelegate.qmlc
│   ├── SwipeView.qml
│   ├── SwipeView.qmlc
│   ├── SwitchDelegate.qml
│   ├── SwitchDelegate.qmlc
│   ├── SwitchIndicator.qml
│   ├── SwitchIndicator.qmlc
│   ├── Switch.qml
│   ├── Switch.qmlc
│   ├── TabBar.qml
│   ├── TabBar.qmlc
│   ├── TabButton.qml
│   ├── TabButton.qmlc
│   ├── TextArea.qml
│   ├── TextArea.qmlc
│   ├── TextField.qml
│   ├── TextField.qmlc
│   ├── ToolBar.qml
│   ├── ToolBar.qmlc
│   ├── ToolButton.qml
│   ├── ToolButton.qmlc
│   ├── ToolSeparator.qml
│   ├── ToolSeparator.qmlc
│   ├── ToolTip.qml
│   ├── ToolTip.qmlc
│   ├── Tumbler.qml
│   └── Tumbler.qmlc
├── MenuBarItem.qml
├── MenuBarItem.qmlc
├── MenuBar.qml
├── MenuBar.qmlc
├── MenuItem.qml
├── MenuItem.qmlc
├── Menu.qml
├── Menu.qmlc
├── MenuSeparator.qml
├── MenuSeparator.qmlc
├── PageIndicator.qml
├── PageIndicator.qmlc
├── Page.qml
├── Page.qmlc
├── Pane.qml
├── Pane.qmlc
├── plugins.qmltypes
├── Popup.qml
├── Popup.qmlc
├── ProgressBar.qml
├── ProgressBar.qmlc
├── qmldir
├── RadioButton.qml
├── RadioButton.qmlc
├── RadioDelegate.qml
├── RadioDelegate.qmlc
├── RangeSlider.qml
├── RangeSlider.qmlc
├── RoundButton.qml
├── RoundButton.qmlc
├── ScrollBar.qml
├── ScrollBar.qmlc
├── ScrollIndicator.qml
├── ScrollIndicator.qmlc
├── ScrollView.qml
├── ScrollView.qmlc
├── Slider.qml
├── Slider.qmlc
├── SpinBox.qml
├── SpinBox.qmlc
├── StackView.qml
├── StackView.qmlc
├── SwipeDelegate.qml
├── SwipeDelegate.qmlc
├── SwipeView.qml
├── SwipeView.qmlc
├── SwitchDelegate.qml
├── SwitchDelegate.qmlc
├── Switch.qml
├── Switch.qmlc
├── TabBar.qml
├── TabBar.qmlc
├── TabButton.qml
├── TabButton.qmlc
├── TextArea.qml
├── TextArea.qmlc
├── TextField.qml
├── TextField.qmlc
├── ToolBar.qml
├── ToolBar.qmlc
├── ToolButton.qml
├── ToolButton.qmlc
├── ToolSeparator.qml
├── ToolSeparator.qmlc
├── ToolTip.qml
├── ToolTip.qmlc
├── Tumbler.qml
├── Tumbler.qmlc
└── Universal
    ├── ApplicationWindow.qml
    ├── ApplicationWindow.qmlc
    ├── BusyIndicator.qml
    ├── BusyIndicator.qmlc
    ├── Button.qml
    ├── Button.qmlc
    ├── CheckBox.qml
    ├── CheckBox.qmlc
    ├── CheckDelegate.qml
    ├── CheckDelegate.qmlc
    ├── CheckIndicator.qml
    ├── CheckIndicator.qmlc
    ├── ComboBox.qml
    ├── ComboBox.qmlc
    ├── DelayButton.qml
    ├── DelayButton.qmlc
    ├── DialogButtonBox.qml
    ├── DialogButtonBox.qmlc
    ├── Dialog.qml
    ├── Dialog.qmlc
    ├── Dial.qml
    ├── Dial.qmlc
    ├── Drawer.qml
    ├── Drawer.qmlc
    ├── Frame.qml
    ├── Frame.qmlc
    ├── GroupBox.qml
    ├── GroupBox.qmlc
    ├── ItemDelegate.qml
    ├── ItemDelegate.qmlc
    ├── Label.qml
    ├── Label.qmlc
    ├── libqtquickcontrols2universalstyleplugin.so
    ├── MenuBarItem.qml
    ├── MenuBarItem.qmlc
    ├── MenuBar.qml
    ├── MenuBar.qmlc
    ├── MenuItem.qml
    ├── MenuItem.qmlc
    ├── Menu.qml
    ├── Menu.qmlc
    ├── MenuSeparator.qml
    ├── MenuSeparator.qmlc
    ├── PageIndicator.qml
    ├── PageIndicator.qmlc
    ├── Page.qml
    ├── Page.qmlc
    ├── Pane.qml
    ├── Pane.qmlc
    ├── plugins.qmltypes
    ├── Popup.qml
    ├── Popup.qmlc
    ├── ProgressBar.qml
    ├── ProgressBar.qmlc
    ├── qmldir
    ├── RadioButton.qml
    ├── RadioButton.qmlc
    ├── RadioDelegate.qml
    ├── RadioDelegate.qmlc
    ├── RadioIndicator.qml
    ├── RadioIndicator.qmlc
    ├── RangeSlider.qml
    ├── RangeSlider.qmlc
    ├── RoundButton.qml
    ├── RoundButton.qmlc
    ├── ScrollBar.qml
    ├── ScrollBar.qmlc
    ├── ScrollIndicator.qml
    ├── ScrollIndicator.qmlc
    ├── Slider.qml
    ├── Slider.qmlc
    ├── SpinBox.qml
    ├── SpinBox.qmlc
    ├── StackView.qml
    ├── StackView.qmlc
    ├── SwipeDelegate.qml
    ├── SwipeDelegate.qmlc
    ├── SwitchDelegate.qml
    ├── SwitchDelegate.qmlc
    ├── SwitchIndicator.qml
    ├── SwitchIndicator.qmlc
    ├── Switch.qml
    ├── Switch.qmlc
    ├── TabBar.qml
    ├── TabBar.qmlc
    ├── TabButton.qml
    ├── TabButton.qmlc
    ├── TextArea.qml
    ├── TextArea.qmlc
    ├── TextField.qml
    ├── TextField.qmlc
    ├── ToolBar.qml
    ├── ToolBar.qmlc
    ├── ToolButton.qml
    ├── ToolButton.qmlc
    ├── ToolSeparator.qml
    ├── ToolSeparator.qmlc
    ├── ToolTip.qml
    ├── ToolTip.qmlc
    ├── Tumbler.qml
    └── Tumbler.qmlc

These plugins will be available from any QML file, via imports. You can use it in .NET like you would any other QML plugin (like QtQuick.Controls, etc).

<!-- gh-comment-id:520229812 --> @pauldotknopf commented on GitHub (Aug 11, 2019): Ah, when you create the plugin, you'll install it into your Qt's plugin directory. See some existing plugins: ``` > tree ~/Qt/Local/qml/QtQuick/Controls.2 ├── AbstractButton.qml ├── AbstractButton.qmlc ├── ActionGroup.qml ├── ActionGroup.qmlc ├── Action.qml ├── Action.qmlc ├── ApplicationWindow.qml ├── ApplicationWindow.qmlc ├── BusyIndicator.qml ├── BusyIndicator.qmlc ├── ButtonGroup.qml ├── ButtonGroup.qmlc ├── Button.qml ├── Button.qmlc ├── CheckBox.qml ├── CheckBox.qmlc ├── CheckDelegate.qml ├── CheckDelegate.qmlc ├── ComboBox.qml ├── ComboBox.qmlc ├── Container.qml ├── Container.qmlc ├── Control.qml ├── Control.qmlc ├── DelayButton.qml ├── DelayButton.qmlc ├── designer │   ├── AbstractButtonSection.qml │   ├── AbstractButtonSection.qmlc │   ├── BusyIndicatorSpecifics.qml │   ├── BusyIndicatorSpecifics.qmlc │   ├── ButtonSection.qml │   ├── ButtonSection.qmlc │   ├── ButtonSpecifics.qml │   ├── ButtonSpecifics.qmlc │   ├── CheckBoxSpecifics.qml │   ├── CheckBoxSpecifics.qmlc │   ├── CheckDelegateSpecifics.qml │   ├── CheckDelegateSpecifics.qmlc │   ├── CheckSection.qml │   ├── CheckSection.qmlc │   ├── ComboBoxSpecifics.qml │   ├── ComboBoxSpecifics.qmlc │   ├── ContainerSection.qml │   ├── ContainerSection.qmlc │   ├── ControlSection.qml │   ├── ControlSection.qmlc │   ├── ControlSpecifics.qml │   ├── ControlSpecifics.qmlc │   ├── DelayButtonSpecifics.qml │   ├── DelayButtonSpecifics.qmlc │   ├── DialSpecifics.qml │   ├── DialSpecifics.qmlc │   ├── FrameSpecifics.qml │   ├── FrameSpecifics.qmlc │   ├── GroupBoxSpecifics.qml │   ├── GroupBoxSpecifics.qmlc │   ├── images │   │   ├── busyindicator-icon16@2x.png │   │   ├── busyindicator-icon16.png │   │   ├── busyindicator-icon@2x.png │   │   ├── busyindicator-icon.png │   │   ├── button-icon16@2x.png │   │   ├── button-icon16.png │   │   ├── button-icon@2x.png │   │   ├── button-icon.png │   │   ├── checkbox-icon16@2x.png │   │   ├── checkbox-icon16.png │   │   ├── checkbox-icon@2x.png │   │   ├── checkbox-icon.png │   │   ├── combobox-icon16@2x.png │   │   ├── combobox-icon16.png │   │   ├── combobox-icon@2x.png │   │   ├── combobox-icon.png │   │   ├── delaybutton-icon16@2x.png │   │   ├── delaybutton-icon16.png │   │   ├── delaybutton-icon@2x.png │   │   ├── delaybutton-icon.png │   │   ├── dial-icon16@2x.png │   │   ├── dial-icon16.png │   │   ├── dial-icon@2x.png │   │   ├── dial-icon.png │   │   ├── frame-icon16@2x.png │   │   ├── frame-icon16.png │   │   ├── frame-icon@2x.png │   │   ├── frame-icon.png │   │   ├── groupbox-icon16@2x.png │   │   ├── groupbox-icon16.png │   │   ├── groupbox-icon@2x.png │   │   ├── groupbox-icon.png │   │   ├── itemdelegate-icon16@2x.png │   │   ├── itemdelegate-icon16.png │   │   ├── itemdelegate-icon@2x.png │   │   ├── itemdelegate-icon.png │   │   ├── label-icon16@2x.png │   │   ├── label-icon16.png │   │   ├── label-icon@2x.png │   │   ├── label-icon.png │   │   ├── page-icon16@2x.png │   │   ├── page-icon16.png │   │   ├── page-icon@2x.png │   │   ├── page-icon.png │   │   ├── pageindicator-icon16@2x.png │   │   ├── pageindicator-icon16.png │   │   ├── pageindicator-icon@2x.png │   │   ├── pageindicator-icon.png │   │   ├── pane-icon16@2x.png │   │   ├── pane-icon16.png │   │   ├── pane-icon@2x.png │   │   ├── pane-icon.png │   │   ├── placeholder-icon16@2x.png │   │   ├── placeholder-icon16.png │   │   ├── placeholder-icon@2x.png │   │   ├── placeholder-icon.png │   │   ├── progressbar-icon16@2x.png │   │   ├── progressbar-icon16.png │   │   ├── progressbar-icon@2x.png │   │   ├── progressbar-icon.png │   │   ├── radiobutton-icon16@2x.png │   │   ├── radiobutton-icon16.png │   │   ├── radiobutton-icon@2x.png │   │   ├── radiobutton-icon.png │   │   ├── rangeslider-icon16@2x.png │   │   ├── rangeslider-icon16.png │   │   ├── rangeslider-icon@2x.png │   │   ├── rangeslider-icon.png │   │   ├── roundbutton-icon16@2x.png │   │   ├── roundbutton-icon16.png │   │   ├── roundbutton-icon@2x.png │   │   ├── roundbutton-icon.png │   │   ├── scrollview-icon16.png │   │   ├── scrollview-icon.png │   │   ├── slider-icon16@2x.png │   │   ├── slider-icon16.png │   │   ├── slider-icon@2x.png │   │   ├── slider-icon.png │   │   ├── spinbox-icon16@2x.png │   │   ├── spinbox-icon16.png │   │   ├── spinbox-icon@2x.png │   │   ├── spinbox-icon.png │   │   ├── stackview-icon16.png │   │   ├── stackview-icon.png │   │   ├── swipeview-icon16.png │   │   ├── swipeview-icon.png │   │   ├── switch-icon16@2x.png │   │   ├── switch-icon16.png │   │   ├── switch-icon@2x.png │   │   ├── switch-icon.png │   │   ├── textarea-icon16@2x.png │   │   ├── textarea-icon16.png │   │   ├── textarea-icon@2x.png │   │   ├── textarea-icon.png │   │   ├── textfield-icon16@2x.png │   │   ├── textfield-icon16.png │   │   ├── textfield-icon@2x.png │   │   ├── textfield-icon.png │   │   ├── toolbar-icon16@2x.png │   │   ├── toolbar-icon16.png │   │   ├── toolbar-icon@2x.png │   │   ├── toolbar-icon.png │   │   ├── toolbutton-icon16@2x.png │   │   ├── toolbutton-icon16.png │   │   ├── toolbutton-icon@2x.png │   │   ├── toolbutton-icon.png │   │   ├── toolseparator-icon16@2x.png │   │   ├── toolseparator-icon16.png │   │   ├── toolseparator-icon@2x.png │   │   ├── toolseparator-icon.png │   │   ├── tumbler-icon16@2x.png │   │   ├── tumbler-icon16.png │   │   ├── tumbler-icon@2x.png │   │   └── tumbler-icon.png │   ├── ItemDelegateSection.qml │   ├── ItemDelegateSection.qmlc │   ├── ItemDelegateSpecifics.qml │   ├── ItemDelegateSpecifics.qmlc │   ├── LabelSpecifics.qml │   ├── LabelSpecifics.qmlc │   ├── PaddingSection.qml │   ├── PaddingSection.qmlc │   ├── PageIndicatorSpecifics.qml │   ├── PageIndicatorSpecifics.qmlc │   ├── PageSpecifics.qml │   ├── PageSpecifics.qmlc │   ├── PaneSection.qml │   ├── PaneSection.qmlc │   ├── PaneSpecifics.qml │   ├── PaneSpecifics.qmlc │   ├── ProgressBarSpecifics.qml │   ├── ProgressBarSpecifics.qmlc │   ├── qtquickcontrols2.metainfo │   ├── RadioButtonSpecifics.qml │   ├── RadioButtonSpecifics.qmlc │   ├── RadioDelegateSpecifics.qml │   ├── RadioDelegateSpecifics.qmlc │   ├── RangeSliderSpecifics.qml │   ├── RangeSliderSpecifics.qmlc │   ├── RoundButtonSpecifics.qml │   ├── RoundButtonSpecifics.qmlc │   ├── ScrollViewSpecifics.qml │   ├── ScrollViewSpecifics.qmlc │   ├── SliderSpecifics.qml │   ├── SliderSpecifics.qmlc │   ├── SpinBoxSpecifics.qml │   ├── SpinBoxSpecifics.qmlc │   ├── StackViewSpecifics.qml │   ├── StackViewSpecifics.qmlc │   ├── SwipeDelegateSpecifics.qml │   ├── SwipeDelegateSpecifics.qmlc │   ├── SwipeViewSpecifics.qml │   ├── SwipeViewSpecifics.qmlc │   ├── SwitchDelegateSpecifics.qml │   ├── SwitchDelegateSpecifics.qmlc │   ├── SwitchSpecifics.qml │   ├── SwitchSpecifics.qmlc │   ├── TabBarSpecifics.qml │   ├── TabBarSpecifics.qmlc │   ├── TabButtonSpecifics.qml │   ├── TabButtonSpecifics.qmlc │   ├── TextAreaSpecifics.qml │   ├── TextAreaSpecifics.qmlc │   ├── TextFieldSpecifics.qml │   ├── TextFieldSpecifics.qmlc │   ├── ToolBarSpecifics.qml │   ├── ToolBarSpecifics.qmlc │   ├── ToolButtonSpecifics.qml │   ├── ToolButtonSpecifics.qmlc │   ├── ToolSeparatorSpecifics.qml │   ├── ToolSeparatorSpecifics.qmlc │   ├── TumblerSpecifics.qml │   └── TumblerSpecifics.qmlc ├── DialogButtonBox.qml ├── DialogButtonBox.qmlc ├── Dialog.qml ├── Dialog.qmlc ├── Dial.qml ├── Dial.qmlc ├── Drawer.qml ├── Drawer.qmlc ├── Frame.qml ├── Frame.qmlc ├── Fusion │   ├── ApplicationWindow.qml │   ├── BusyIndicator.qml │   ├── ButtonPanel.qml │   ├── Button.qml │   ├── CheckBox.qml │   ├── CheckDelegate.qml │   ├── CheckIndicator.qml │   ├── ComboBox.qml │   ├── DelayButton.qml │   ├── DialogButtonBox.qml │   ├── Dialog.qml │   ├── Dial.qml │   ├── Drawer.qml │   ├── Frame.qml │   ├── GroupBox.qml │   ├── ItemDelegate.qml │   ├── Label.qml │   ├── libqtquickcontrols2fusionstyleplugin.so │   ├── MenuBarItem.qml │   ├── MenuBar.qml │   ├── MenuItem.qml │   ├── Menu.qml │   ├── MenuSeparator.qml │   ├── PageIndicator.qml │   ├── Page.qml │   ├── Pane.qml │   ├── Popup.qml │   ├── ProgressBar.qml │   ├── qmldir │   ├── RadioButton.qml │   ├── RadioDelegate.qml │   ├── RadioIndicator.qml │   ├── RangeSlider.qml │   ├── RoundButton.qml │   ├── ScrollBar.qml │   ├── ScrollIndicator.qml │   ├── ScrollView.qml │   ├── SliderGroove.qml │   ├── SliderHandle.qml │   ├── Slider.qml │   ├── SpinBox.qml │   ├── SwipeDelegate.qml │   ├── SwitchDelegate.qml │   ├── SwitchIndicator.qml │   ├── Switch.qml │   ├── TabBar.qml │   ├── TabButton.qml │   ├── TextArea.qml │   ├── TextField.qml │   ├── ToolBar.qml │   ├── ToolButton.qml │   ├── ToolSeparator.qml │   ├── ToolTip.qml │   └── Tumbler.qml ├── GroupBox.qml ├── GroupBox.qmlc ├── Imagine │   ├── ApplicationWindow.qml │   ├── BusyIndicator.qml │   ├── Button.qml │   ├── CheckBox.qml │   ├── CheckDelegate.qml │   ├── ComboBox.qml │   ├── DelayButton.qml │   ├── DialogButtonBox.qml │   ├── Dialog.qml │   ├── Dial.qml │   ├── Drawer.qml │   ├── Frame.qml │   ├── GroupBox.qml │   ├── ItemDelegate.qml │   ├── Label.qml │   ├── libqtquickcontrols2imaginestyleplugin.so │   ├── MenuItem.qml │   ├── Menu.qml │   ├── MenuSeparator.qml │   ├── PageIndicator.qml │   ├── Page.qml │   ├── Pane.qml │   ├── plugins.qmltypes │   ├── Popup.qml │   ├── ProgressBar.qml │   ├── qmldir │   ├── RadioButton.qml │   ├── RadioDelegate.qml │   ├── RangeSlider.qml │   ├── RoundButton.qml │   ├── ScrollBar.qml │   ├── ScrollIndicator.qml │   ├── Slider.qml │   ├── SpinBox.qml │   ├── StackView.qml │   ├── SwipeDelegate.qml │   ├── SwipeView.qml │   ├── SwitchDelegate.qml │   ├── Switch.qml │   ├── TabBar.qml │   ├── TabButton.qml │   ├── TextArea.qml │   ├── TextField.qml │   ├── ToolBar.qml │   ├── ToolButton.qml │   ├── ToolSeparator.qml │   ├── ToolTip.qml │   └── Tumbler.qml ├── ItemDelegate.qml ├── ItemDelegate.qmlc ├── Label.qml ├── Label.qmlc ├── libqtquickcontrols2plugin.so ├── Material │   ├── ApplicationWindow.qml │   ├── ApplicationWindow.qmlc │   ├── BoxShadow.qml │   ├── BoxShadow.qmlc │   ├── BusyIndicator.qml │   ├── BusyIndicator.qmlc │   ├── Button.qml │   ├── Button.qmlc │   ├── CheckBox.qml │   ├── CheckBox.qmlc │   ├── CheckDelegate.qml │   ├── CheckDelegate.qmlc │   ├── CheckIndicator.qml │   ├── CheckIndicator.qmlc │   ├── ComboBox.qml │   ├── ComboBox.qmlc │   ├── CursorDelegate.qml │   ├── CursorDelegate.qmlc │   ├── DelayButton.qml │   ├── DelayButton.qmlc │   ├── DialogButtonBox.qml │   ├── DialogButtonBox.qmlc │   ├── Dialog.qml │   ├── Dialog.qmlc │   ├── Dial.qml │   ├── Dial.qmlc │   ├── Drawer.qml │   ├── Drawer.qmlc │   ├── ElevationEffect.qml │   ├── ElevationEffect.qmlc │   ├── Frame.qml │   ├── Frame.qmlc │   ├── GroupBox.qml │   ├── GroupBox.qmlc │   ├── ItemDelegate.qml │   ├── ItemDelegate.qmlc │   ├── Label.qml │   ├── Label.qmlc │   ├── libqtquickcontrols2materialstyleplugin.so │   ├── MenuBarItem.qml │   ├── MenuBarItem.qmlc │   ├── MenuBar.qml │   ├── MenuBar.qmlc │   ├── MenuItem.qml │   ├── MenuItem.qmlc │   ├── Menu.qml │   ├── Menu.qmlc │   ├── MenuSeparator.qml │   ├── MenuSeparator.qmlc │   ├── PageIndicator.qml │   ├── PageIndicator.qmlc │   ├── Page.qml │   ├── Page.qmlc │   ├── Pane.qml │   ├── Pane.qmlc │   ├── plugins.qmltypes │   ├── Popup.qml │   ├── Popup.qmlc │   ├── ProgressBar.qml │   ├── ProgressBar.qmlc │   ├── qmldir │   ├── RadioButton.qml │   ├── RadioButton.qmlc │   ├── RadioDelegate.qml │   ├── RadioDelegate.qmlc │   ├── RadioIndicator.qml │   ├── RadioIndicator.qmlc │   ├── RangeSlider.qml │   ├── RangeSlider.qmlc │   ├── RectangularGlow.qml │   ├── RectangularGlow.qmlc │   ├── RoundButton.qml │   ├── RoundButton.qmlc │   ├── ScrollBar.qml │   ├── ScrollBar.qmlc │   ├── ScrollIndicator.qml │   ├── ScrollIndicator.qmlc │   ├── SliderHandle.qml │   ├── SliderHandle.qmlc │   ├── Slider.qml │   ├── Slider.qmlc │   ├── SpinBox.qml │   ├── SpinBox.qmlc │   ├── StackView.qml │   ├── StackView.qmlc │   ├── SwipeDelegate.qml │   ├── SwipeDelegate.qmlc │   ├── SwipeView.qml │   ├── SwipeView.qmlc │   ├── SwitchDelegate.qml │   ├── SwitchDelegate.qmlc │   ├── SwitchIndicator.qml │   ├── SwitchIndicator.qmlc │   ├── Switch.qml │   ├── Switch.qmlc │   ├── TabBar.qml │   ├── TabBar.qmlc │   ├── TabButton.qml │   ├── TabButton.qmlc │   ├── TextArea.qml │   ├── TextArea.qmlc │   ├── TextField.qml │   ├── TextField.qmlc │   ├── ToolBar.qml │   ├── ToolBar.qmlc │   ├── ToolButton.qml │   ├── ToolButton.qmlc │   ├── ToolSeparator.qml │   ├── ToolSeparator.qmlc │   ├── ToolTip.qml │   ├── ToolTip.qmlc │   ├── Tumbler.qml │   └── Tumbler.qmlc ├── MenuBarItem.qml ├── MenuBarItem.qmlc ├── MenuBar.qml ├── MenuBar.qmlc ├── MenuItem.qml ├── MenuItem.qmlc ├── Menu.qml ├── Menu.qmlc ├── MenuSeparator.qml ├── MenuSeparator.qmlc ├── PageIndicator.qml ├── PageIndicator.qmlc ├── Page.qml ├── Page.qmlc ├── Pane.qml ├── Pane.qmlc ├── plugins.qmltypes ├── Popup.qml ├── Popup.qmlc ├── ProgressBar.qml ├── ProgressBar.qmlc ├── qmldir ├── RadioButton.qml ├── RadioButton.qmlc ├── RadioDelegate.qml ├── RadioDelegate.qmlc ├── RangeSlider.qml ├── RangeSlider.qmlc ├── RoundButton.qml ├── RoundButton.qmlc ├── ScrollBar.qml ├── ScrollBar.qmlc ├── ScrollIndicator.qml ├── ScrollIndicator.qmlc ├── ScrollView.qml ├── ScrollView.qmlc ├── Slider.qml ├── Slider.qmlc ├── SpinBox.qml ├── SpinBox.qmlc ├── StackView.qml ├── StackView.qmlc ├── SwipeDelegate.qml ├── SwipeDelegate.qmlc ├── SwipeView.qml ├── SwipeView.qmlc ├── SwitchDelegate.qml ├── SwitchDelegate.qmlc ├── Switch.qml ├── Switch.qmlc ├── TabBar.qml ├── TabBar.qmlc ├── TabButton.qml ├── TabButton.qmlc ├── TextArea.qml ├── TextArea.qmlc ├── TextField.qml ├── TextField.qmlc ├── ToolBar.qml ├── ToolBar.qmlc ├── ToolButton.qml ├── ToolButton.qmlc ├── ToolSeparator.qml ├── ToolSeparator.qmlc ├── ToolTip.qml ├── ToolTip.qmlc ├── Tumbler.qml ├── Tumbler.qmlc └── Universal ├── ApplicationWindow.qml ├── ApplicationWindow.qmlc ├── BusyIndicator.qml ├── BusyIndicator.qmlc ├── Button.qml ├── Button.qmlc ├── CheckBox.qml ├── CheckBox.qmlc ├── CheckDelegate.qml ├── CheckDelegate.qmlc ├── CheckIndicator.qml ├── CheckIndicator.qmlc ├── ComboBox.qml ├── ComboBox.qmlc ├── DelayButton.qml ├── DelayButton.qmlc ├── DialogButtonBox.qml ├── DialogButtonBox.qmlc ├── Dialog.qml ├── Dialog.qmlc ├── Dial.qml ├── Dial.qmlc ├── Drawer.qml ├── Drawer.qmlc ├── Frame.qml ├── Frame.qmlc ├── GroupBox.qml ├── GroupBox.qmlc ├── ItemDelegate.qml ├── ItemDelegate.qmlc ├── Label.qml ├── Label.qmlc ├── libqtquickcontrols2universalstyleplugin.so ├── MenuBarItem.qml ├── MenuBarItem.qmlc ├── MenuBar.qml ├── MenuBar.qmlc ├── MenuItem.qml ├── MenuItem.qmlc ├── Menu.qml ├── Menu.qmlc ├── MenuSeparator.qml ├── MenuSeparator.qmlc ├── PageIndicator.qml ├── PageIndicator.qmlc ├── Page.qml ├── Page.qmlc ├── Pane.qml ├── Pane.qmlc ├── plugins.qmltypes ├── Popup.qml ├── Popup.qmlc ├── ProgressBar.qml ├── ProgressBar.qmlc ├── qmldir ├── RadioButton.qml ├── RadioButton.qmlc ├── RadioDelegate.qml ├── RadioDelegate.qmlc ├── RadioIndicator.qml ├── RadioIndicator.qmlc ├── RangeSlider.qml ├── RangeSlider.qmlc ├── RoundButton.qml ├── RoundButton.qmlc ├── ScrollBar.qml ├── ScrollBar.qmlc ├── ScrollIndicator.qml ├── ScrollIndicator.qmlc ├── Slider.qml ├── Slider.qmlc ├── SpinBox.qml ├── SpinBox.qmlc ├── StackView.qml ├── StackView.qmlc ├── SwipeDelegate.qml ├── SwipeDelegate.qmlc ├── SwitchDelegate.qml ├── SwitchDelegate.qmlc ├── SwitchIndicator.qml ├── SwitchIndicator.qmlc ├── Switch.qml ├── Switch.qmlc ├── TabBar.qml ├── TabBar.qmlc ├── TabButton.qml ├── TabButton.qmlc ├── TextArea.qml ├── TextArea.qmlc ├── TextField.qml ├── TextField.qmlc ├── ToolBar.qml ├── ToolBar.qmlc ├── ToolButton.qml ├── ToolButton.qmlc ├── ToolSeparator.qml ├── ToolSeparator.qmlc ├── ToolTip.qml ├── ToolTip.qmlc ├── Tumbler.qml └── Tumbler.qmlc ``` These plugins will be available from any QML file, via imports. You can use it in .NET like you would any other QML plugin (like QtQuick.Controls, etc).
Author
Owner

@MosiQt commented on GitHub (Aug 11, 2019):

Interesting, So qml.Net will search that directory to load all the plugins?

<!-- gh-comment-id:520229920 --> @MosiQt commented on GitHub (Aug 11, 2019): Interesting, So qml.Net will search that directory to load all the plugins?
Author
Owner

@pauldotknopf commented on GitHub (Aug 11, 2019):

Yes.

Well, Qml.Net won't load them, Qt itself will find and load them. It's a feature of Qt/QML and it's built-in plugin system.

<!-- gh-comment-id:520230439 --> @pauldotknopf commented on GitHub (Aug 11, 2019): Yes. Well, Qml.Net won't load them, Qt itself will find and load them. It's a feature of Qt/QML and it's built-in plugin system.
Author
Owner

@MosiQt commented on GitHub (Aug 11, 2019):

Understood. At first I thought you have built an engine like qt simulator or something like that for running qml in .Net!

<!-- gh-comment-id:520230810 --> @MosiQt commented on GitHub (Aug 11, 2019): Understood. At first I thought you have built an engine like qt simulator or something like that for running qml in .Net!
Author
Owner

@MosiQt commented on GitHub (Aug 13, 2019):

You need to use Qt Creator and C++ to create the plugin: https://doc.qt.io/qt-5/qtqml-tutorials-extending-qml-example.html

Thank you Paul. It helped.

I created the plugin with QtCreator and now my applicationWindow has aero snap functionalities completely. But there is another issue. Although the plugin is detected and loaded in QtCreator, it is not loaded while running with vscode (qml.net). I have moved the plugin folder into "/Qt/Local/qml/" folder and its working in QtCreator, but in qml.net gives following error:

QQmlApplicationEngine failed to load component
main.qml:5 module "FramelessWindow" is not installed

(I just have to mention that I launched the qml.net for the first time with different Qt version in path. Now the plugin is installed for the qt version that is in path. I suspect that maybe the qml.net is pointing to a wrong qt version (previous version) in spite that the correct version is in the paths. )

This is my plugin folder:
2019-08-13 10_14_23-FramelessWindow

And this is the main.qml where it works in qtcreator:
image

<!-- gh-comment-id:520695132 --> @MosiQt commented on GitHub (Aug 13, 2019): > You need to use Qt Creator and C++ to create the plugin: https://doc.qt.io/qt-5/qtqml-tutorials-extending-qml-example.html Thank you Paul. It helped. I created the plugin with QtCreator and now my applicationWindow has aero snap functionalities completely. But there is another issue. Although the plugin is detected and loaded in QtCreator, it is not loaded while running with vscode (qml.net). I have moved the plugin folder into "/Qt/Local/qml/" folder and its working in QtCreator, but in qml.net gives following error: ``` QQmlApplicationEngine failed to load component main.qml:5 module "FramelessWindow" is not installed ``` (I just have to mention that I launched the qml.net for the first time with different Qt version in path. Now the plugin is installed for the qt version that is in path. I suspect that maybe the qml.net is pointing to a wrong qt version (previous version) in spite that the correct version is in the paths. ) This is my plugin folder: ![2019-08-13 10_14_23-FramelessWindow](https://user-images.githubusercontent.com/53909162/62917942-6ef73080-bdb3-11e9-96a0-a06a81b15368.png) And this is the main.qml where it works in qtcreator: ![image](https://user-images.githubusercontent.com/53909162/62918006-9f3ecf00-bdb3-11e9-8726-0add23f7c5cc.png)
Author
Owner

@MosiQt commented on GitHub (Sep 22, 2019):

You need to use Qt Creator and C++ to create the plugin: https://doc.qt.io/qt-5/qtqml-tutorials-extending-qml-example.html

Thank you Paul. It helped.

I created the plugin with QtCreator and now my applicationWindow has aero snap functionalities completely. But there is another issue. Although the plugin is detected and loaded in QtCreator, it is not loaded while running with vscode (qml.net). I have moved the plugin folder into "/Qt/Local/qml/" folder and its working in QtCreator, but in qml.net gives following error:

QQmlApplicationEngine failed to load component
main.qml:5 module "FramelessWindow" is not installed

(I just have to mention that I launched the qml.net for the first time with different Qt version in path. Now the plugin is installed for the qt version that is in path. I suspect that maybe the qml.net is pointing to a wrong qt version (previous version) in spite that the correct version is in the paths. )

This is my plugin folder:
2019-08-13 10_14_23-FramelessWindow

And this is the main.qml where it works in qtcreator:
image

I've fixed this issue by pasting the plugin folder into downloaded qt runtimes. At first I thought paste the plugin into Qt installed path. But, after searching a lot, I've found that I have to paste it into qt runtimes for .Net. It's usually in user path. you can find it by searching qt dlls.

<!-- gh-comment-id:533886551 --> @MosiQt commented on GitHub (Sep 22, 2019): > > You need to use Qt Creator and C++ to create the plugin: https://doc.qt.io/qt-5/qtqml-tutorials-extending-qml-example.html > > Thank you Paul. It helped. > > I created the plugin with QtCreator and now my applicationWindow has aero snap functionalities completely. But there is another issue. Although the plugin is detected and loaded in QtCreator, it is not loaded while running with vscode (qml.net). I have moved the plugin folder into "/Qt/Local/qml/" folder and its working in QtCreator, but in qml.net gives following error: > > ``` > QQmlApplicationEngine failed to load component > main.qml:5 module "FramelessWindow" is not installed > ``` > > (I just have to mention that I launched the qml.net for the first time with different Qt version in path. Now the plugin is installed for the qt version that is in path. I suspect that maybe the qml.net is pointing to a wrong qt version (previous version) in spite that the correct version is in the paths. ) > > This is my plugin folder: > ![2019-08-13 10_14_23-FramelessWindow](https://user-images.githubusercontent.com/53909162/62917942-6ef73080-bdb3-11e9-96a0-a06a81b15368.png) > > And this is the main.qml where it works in qtcreator: > ![image](https://user-images.githubusercontent.com/53909162/62918006-9f3ecf00-bdb3-11e9-8726-0add23f7c5cc.png) I've fixed this issue by pasting the plugin folder into downloaded qt runtimes. At first I thought paste the plugin into Qt installed path. But, after searching a lot, I've found that I have to paste it into qt runtimes for .Net. It's usually in user path. you can find it by searching qt dlls.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/qmlnet#97
No description provided.