核心思想是:

在main中引入QMainWindow对象,将qml文件作为该对象的widget,并将该对象注册到qml中,然后再qml中通过识别鼠标的位移来更改这个mainwindow的pos属性。

实现:

#include 
#include
#include
#include
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("mainwindow",&window); window.setStyleSheet("background:transparent;"); window.setAttribute(Qt::WA_TranslucentBackground); window.setWindowFlags(Qt::FramelessWindowHint); window.show(); app.exec();}

   qml:

Item {                   Rectangle {             color: "blue"             x: 50; y: 50; width: 100; height: 100                MouseArea {                id: mouseRegion                anchors.fill: parent;                property variant clickPos: "1,1"                    onPressed: {                    clickPos  = Qt.point(mouse.x,mouse.y)                }                    onPositionChanged: {                    var delta = Qt.point(mouse.x-clickPos.x, mouse.y-clickPos.y)                    mainwindow.pos = Qt.point(mainwindow.pos.x+delta.x,                                      mainwindow.pos.y+delta.y)                }            } //mousearea         } //rectangle }

转载:http://blog.csdn.net/sgnh123456/article/details/8055654