核心思想是:
在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