首页 > 解决方案 > QML 切换窗口标志

问题描述

我有一个用 QtCreator 编写的 Qt QML 应用程序,我想添加一个按钮,让用户能够切换窗口标志“StayOnTop”。我不是在寻找有关如何创建按钮和所有爵士乐的细节,我只是在寻找有关窗口标志切换功能的帮助。我知道如何在 Python/Pyside 中做到这一点,但不知道 QML C++。

例如,我如何将其转换为我的 qml 应用程序?

def toggle_stay_on_top(self):
  if self.stayOpTopAct.isChecked():
    # enabled
    self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)
  else:
    # disable
    self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowStaysOnTopHint)

我尝试使用它,但标题栏和最小/最大/关闭按钮消失了。

flags: Settings.stayOnTop ? flags | Qt.WindowStaysOnTopHint : flags & ~Qt.WindowStaysOnTopHint

标签: qtqml

解决方案


Window在您的 QML 文件中使用 a 。有一个属性flags可以使用。

Window {
    id: root
    flags: Qt.Tool // Just to check if the flag isn't removed
    visible: true
    width: 500
    height: 500
    Rectangle {
        anchors.fill: parent
        color: "red"
        CheckBox {
                id: stayOpTopAct
                text: "Stay on top"
                onCheckStateChanged: {
                    if(checked)
                        root.flags = root.flags | Qt.WindowStaysOnTopHint
                    else
                        root.flags = root.flags & ~Qt.WindowStaysOnTopHint
                }
        }
    }
}

推荐阅读