我是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中的无框架应用程序中。 谢谢!
答案 0 :(得分:0)
您应该将QWindow::flags
设置为一组窗口标志和(可选)一组提示,但不仅仅是提示。所以你必须改变
viewer.setFlags(Qt::FramelessWindowHint);
到
viewer.setFlags(Qt::Window | Qt::FramelessWindowHint);
但是既然你用QML构建了GUI,我建议你以某种方式做到这一点:
Window {
flags: Qt.Window | Qt.FramelessWindowHint
...
}
顺便说一下,因为你使用锚定,所以要避免设置大小。