在本文中,你将了解 Qt 的窗口,以及QMainWindow
、QWidget
、QDialog
之间的区别和在PySide6中的使用方法;
Qt 主要使用PySide6.QtWidgets.QMainWindow
、QWidget
、QDialog
这几个类创建窗口;
区别
QMainWindow
:Qt 的主窗口管理类;某些部件如菜单QMenuBar
、状态栏QStatusBar
只能在QMainWindow
上显示;QWidget
:是 Qt 中所有用户界面对象(像按钮、文本框)的基类;QDialog
:Qt 的对话框窗口基类,主要用于短期任务(如设置窗口)和用于与用户进行简短的交流;QDialog
可以是模态和非模态的,通俗点说就是它可以在窗口没关闭前,它的父窗口无法选中;QDialog
继承自QWidget
;
创建窗口
PySide6 创建窗口是非常简单的,示例代码如下:
import sys
from PySide6 import QtWidgets
#import ui_xxxx # 创建UI的代码,如果有的话
class MyWindow(QtWidgets.QMainWindow):#继承QMainWindow
def __init__(self):
super().__init__()
#在此创建窗体上的部件
#使用UI文件创建部件,如果有的话
#self.ui = ui_xxxx.Ui_MainWindow()
#self.ui.setupUi(self)
if __name__ == "__main__":
app = QtWidgets.QApplication([])
window = MyWindow() #实例化窗口
window.show()#显示
sys.exit(app.exec())
代码中定义了一个MyWindow
的类,继承自QMainWindow
;MyWindow
经过实例化后即可调用show()
方法显示窗口;
使用 QDialog
class MyDialog(QtWidgets.QDialog):
def __init__(self):
super().__init__()
#在此创建窗体上的部件
pass
使用 QWidget
class MyWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
#在此创建窗体上的部件
pass