我是Qt的新手。我想开发一个无框架的应用程序。但是QML中的AreaDrop不适用于Windows中的无框架应用程序。
我的代码:
main.qml
import QtQuick 2.5
Item {
visible: true
width: 640
height: 480
Rectangle {
anchors.fill: parent
width: 640
height: 480
color: "green"
DropArea {
anchors.fill: parent
width: 640
height: 480
onEntered: {
console.log("drop enter")
}
onDropped: {
console.log("droped");
}
}
}
}
main.cpp
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQuickView viewer;
viewer.setSource(QUrl("qrc:/main.qml"));
viewer.setFlags(Qt::FramelessWindowHint);
viewer.setColor(QColor(Qt::transparent));
viewer.show();
return app.exec();
}
这段代码在Ubuntu中工作正常。但是在Windows中,文件删除是不可接受的。我找不到解决此问题的解决方案。
因此,如何将文件拖到Windows中的无框架应用程序中。
谢谢!!
最佳答案
您应该将QWindow::flags
设置为一组窗口标志和(可选)一组提示,但不仅限于提示。所以你必须改变
viewer.setFlags(Qt::FramelessWindowHint);
至
viewer.setFlags(Qt::Window | Qt::FramelessWindowHint);
但是,由于您是在QML中构建GUI的,因此我建议您以某种方式执行此操作:
Window {
flags: Qt.Window | Qt.FramelessWindowHint
...
}
顺便说一句,因为您使用锚定,所以避免设置大小。