之前的blog中写到如何设置窗体无边框以及设置背景透明,参考Qt中设置QML窗体无边框和背景透明
因为,窗体设置成无边框之后,窗体的拖动就要靠自己写的程序来完成了!
本文参考Resize Qml window这篇文章,结合自己的需求解决了拖动窗体的需要!
首先,介绍上面这个参考文章里的解决方法:
核心思想是:
在main中引入QMainWindow对象,将qml文件作为该对象的widget,并将该对象注册到qml中,然后再qml中通过识别鼠标的位移来更改这个mainwindow的pos属性。
实现:
1、win.cpp:
#include <QApplication> #include <QDeclarativeView> #include <QMainWindow> #include <QDeclarativeContext> int main(int argc, char *argv[]) {
QApplication app(argc, argv); QMainWindow window; QDeclarativeView* v = new QDeclarativeView; window.setCentralWidget(v); v->setSource(QUrl::fromLocalFile(("draw_rectangles.qml"))); // expose window object to QML v->rootContext()->setContextProperty