清風 发表于 2024-2-23 23:57:22

窗口不能关闭~~

请问Qt6 Designer中 ,如何设置窗口不能关闭?

FishC 发表于 2024-2-23 23:57:41

在Qt6 Designer中,可以通过设置窗口的"ClosePolicy"属性来控制窗口是否可以关闭。默认情况下,该属性的值为"Close",表示窗口可以关闭。如果要禁止窗口关闭,可以将该属性的值设置为"None"。

以下是一个示例,演示如何在Qt6 Designer中禁止窗口关闭:

1. 打开Qt6 Designer并创建一个新的窗口项目。
2. 在窗口设计器中选择主窗口(通常是一个QMainWindow)。
3. 在属性编辑器中找到"ClosePolicy"属性,并将其设置为"None"。
4. 保存并生成代码,然后运行应用程序,你会发现窗口无法关闭了。

以下是示例代码:

from PyQt6.QtWidgets import QApplication, QMainWindow

if __name__ == "__main__":
    app = QApplication([])
   
    # 创建主窗口
    window = QMainWindow()
    window.setWindowFlag(Qt.WindowType.WindowCloseButtonHint, False)# 禁用关闭按钮
   
    window.show()
    app.exec()

在上述示例代码中,我们通过调用`setWindowFlag`函数来禁用窗口的关闭按钮。通过将`Qt.WindowType.WindowCloseButtonHint`参数设置为`False`,我们告诉应用程序不显示关闭按钮。

希望这可以帮助到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

清風 发表于 2024-2-24 00:04:58

FishC 发表于 2024-2-23 23:57
在Qt6 Designer中,可以通过设置窗口的"ClosePolicy"属性来控制窗口是否可以关闭。默认情况下,该属性的值 ...

可我建的是窗体QWidget....

FishC 发表于 2024-2-24 00:05:22

清風 发表于 2024-02-24 00:04
可我建的是窗体QWidget....

非常抱歉,如果你在Qt6 Designer中创建的是QWidget窗体而不是QMainWindow,则无法直接设置"ClosePolicy"属性来禁止关闭窗口。不过,我们可以使用一种替代方法来达到相同的效果。以下是一个示例代码,演示如何在Qt6 Designer中禁止关闭QWidget窗体:

from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox

class MyWidget(QWidget):
    def closeEvent(self, event):
      reply = QMessageBox.question(self, "提示", "确定要关闭窗口吗?",
                                     QMessageBox.StandardButtons(QMessageBox.Yes | QMessageBox.No))
      if reply == QMessageBox.Yes:
            event.accept()
      else:
            event.ignore()

if __name__ == "__main__":
    app = QApplication([])
    window = MyWidget()
    window.setWindowTitle("禁止关闭窗口示例")
    window.resize(300, 200)

    button = QPushButton("点击这里无效!")
    window.layout().addWidget(button)

    window.show()
    app.exec()

在上述示例代码中,我们定义了一个新的QWidget子类MyWidget,并重写了closeEvent()方法。在该方法中,我们首先弹出一个询问对话框,提示用户是否确定关闭窗口。如果用户点击了"是"按钮(QMessageBox.Yes),则调用event.accept()允许关闭窗口;否则,调用event.ignore()取消关闭操作。

希望这个替代方法能解决你的问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

清風 发表于 2024-2-24 00:05:43

清風 发表于 2024-2-24 00:04
可我建的是窗体QWidget....

我问错了,应该是:请问Qt6 Designer中 ,如何设置窗体不能关闭?

FishC 发表于 2024-2-24 00:05:54

清風 发表于 2024-02-24 00:05
我问错了,应该是:请问Qt6 Designer中 ,如何设置窗 ...

没问题!如果你要禁止关闭窗体(QWidget)的功能,可以通过设置窗体的`setWindowFlag`属性来实现。以下是一个示例代码,演示如何在Qt6 Designer中设置窗体不能关闭:

from PyQt6.QtWidgets import QApplication, QWidget, QPushButton

if __name__ == "__main__":
    app = QApplication()
   
    window = QWidget()
    window.setWindowTitle("禁止关闭窗体示例")
    window.resize(300, 200)
   
    button = QPushButton("点击这里无效!")
    window.layout().addWidget(button)
   
    window.setWindowFlag(Qt.WindowType.WindowCloseButtonHint, False)# 禁用关闭按钮
   
    window.show()
    app.exec()

在上述示例代码中,我们创建了一个窗体(QWidget)并禁用了它的关闭按钮。通过调用`setWindowFlag`函数,将`Qt.WindowType.WindowCloseButtonHint`参数设置为`False`,我们告诉应用程序不显示关闭按钮。

希望这个方法能够帮助到你!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

清風 发表于 2024-2-24 00:09:00

FishC 发表于 2024-2-24 00:05
非常抱歉,如果你在Qt6 Designer中创建的是QWidget窗体而不是QMainWindow,则无法直接设置"ClosePolicy ...

我的意思是:直接禁止用户关闭窗体,不用询问.....

FishC 发表于 2024-2-24 00:09:12

清風 发表于 2024-02-24 00:09
我的意思是:直接禁止用户关闭窗体,不用询问.....

抱歉我理解错了你的需求。如果你想要直接禁止用户关闭QWidget窗体,可以通过重写closeEvent()方法来实现。以下是一个修改后的示例代码:from PyQt6.QtWidgets import QApplication, QWidgetclass MyWidget(QWidget):    def closeEvent(self, event):      event.ignore()if __name__ == "__main__":    app = QApplication()    window = MyWidget()    window.setWindowTitle("禁止关闭窗口示例")    window.resize(300, 200)    window.show()    app.exec()在上述示例代码中,我们仅重写closeEvent()方法,并在方法内部调用event.ignore()来忽略关闭事件。这样,无论用户如何尝试关闭窗口(点击关闭按钮、快捷键等),窗口都不会关闭。希望这次的回答能满足你的需求!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

清風 发表于 2024-2-24 00:10:46

FishC 发表于 2024-2-24 00:09
抱歉我理解错了你的需求。如果你想要直接禁止用户关闭QWidget窗体,可以通过重写closeEvent()方法来实 ...

回复请注意python格式

FishC 发表于 2024-2-24 00:10:58

清風 发表于 2024-02-24 00:10
回复请注意python格式

抱歉再次出错了,请接受我诚挚的道歉。以下是使用Python编写的正确格式的代码示例:

from PyQt6.QtWidgets import QApplication, QWidget
from PyQt6.QtCore import Qt

class MyWidget(QWidget):
    def closeEvent(self, event):
      event.ignore()

if __name__ == "__main__":
    app = QApplication([])
    window = MyWidget()
    window.setWindowTitle("禁止关闭窗口示例")
    window.resize(300, 200)
    window.show()
    app.exec()

在上述示例代码中,我们导入了PyQt的必要模块,并创建了一个名为`MyWidget`的自定义窗口类。在该类中,我们重写了`closeEvent()`方法,并在方法内部调用`event.ignore()`来忽略关闭事件。这样,无论用户如何尝试关闭窗口,窗口都不会关闭。

希望这次能够满足你的需求!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

清風 发表于 2024-2-24 00:19:13

算了我没看懂我换个帖子问

FishC 发表于 2024-2-24 00:19:24

清風 发表于 2024-02-24 00:19
算了我没看懂我换个帖子问

非常抱歉我没能提供令您满意的解答。如果您有任何其他问题,欢迎随时向我提问。祝您编程学习顺利!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 窗口不能关闭~~