我是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
    ...
}


顺便说一句,因为您使用锚定,所以避免设置大小。

09-06 11:51