鱼C论坛

 找回密码
 立即注册
查看: 342|回复: 11

窗口不能关闭~~

[复制链接]
发表于 2024-2-23 23:57:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-2-23 23:57:41 | 显示全部楼层
在Qt6 Designer中,可以通过设置窗口的"ClosePolicy"属性来控制窗口是否可以关闭。默认情况下,该属性的值为"Close",表示窗口可以关闭。如果要禁止窗口关闭,可以将该属性的值设置为"None"。

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

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

以下是示例代码:

  1. from PyQt6.QtWidgets import QApplication, QMainWindow

  2. if __name__ == "__main__":
  3.     app = QApplication([])
  4.    
  5.     # 创建主窗口
  6.     window = QMainWindow()
  7.     window.setWindowFlag(Qt.WindowType.WindowCloseButtonHint, False)  # 禁用关闭按钮
  8.    
  9.     window.show()
  10.     app.exec()
复制代码


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

希望这可以帮助到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-24 00:04:58 | 显示全部楼层
FishC 发表于 2024-2-23 23:57
在Qt6 Designer中,可以通过设置窗口的"ClosePolicy"属性来控制窗口是否可以关闭。默认情况下,该属性的值 ...

可我建的是窗体QWidget....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-24 00:05:22 | 显示全部楼层
清風 发表于 2024-02-24 00:04
可我建的是窗体QWidget....


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

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

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

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

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

  17.     window.show()
  18.     app.exec()
复制代码


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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-24 00:05:43 | 显示全部楼层
清風 发表于 2024-2-24 00:04
可我建的是窗体QWidget....

我问错了,应该是:请问Qt6 Designer中 ,如何设置窗体不能关闭?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-24 00:05:54 | 显示全部楼层
清風 发表于 2024-02-24 00:05
我问错了,应该是:请问Qt6 Designer中 ,如何设置窗 ...


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

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

  2. if __name__ == "__main__":
  3.     app = QApplication()
  4.    
  5.     window = QWidget()
  6.     window.setWindowTitle("禁止关闭窗体示例")
  7.     window.resize(300, 200)
  8.    
  9.     button = QPushButton("点击这里无效!")
  10.     window.layout().addWidget(button)
  11.    
  12.     window.setWindowFlag(Qt.WindowType.WindowCloseButtonHint, False)  # 禁用关闭按钮
  13.    
  14.     window.show()
  15.     app.exec()
复制代码


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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我的意思是:直接禁止用户关闭窗体,不用询问.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回复请注意python格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-24 00:10:58 | 显示全部楼层
清風 发表于 2024-02-24 00:10
回复请注意python格式


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

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

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

  6. if __name__ == "__main__":
  7.     app = QApplication([])
  8.     window = MyWidget()
  9.     window.setWindowTitle("禁止关闭窗口示例")
  10.     window.resize(300, 200)
  11.     window.show()
  12.     app.exec()
复制代码


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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-24 00:19:13 | 显示全部楼层
算了  我没看懂  我换个帖子问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-24 00:19:24 | 显示全部楼层
清風 发表于 2024-02-24 00:19
算了  我没看懂  我换个帖子问


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 15:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表