繁体   English   中英

PyQt4:QWidget和QMainWindow之间的区别

[英]PyQt4: Difference between QWidget and QMainWindow

在阅读PyQt4教程时,有时示例使用QtGui.QMainWindow ,有时它使用QtGui.QWidget

问题:你怎么知道何时使用哪个?

import sys
from PyQt4 import QtGui


class Example(QtGui.QMainWindow):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):               

        self.statusBar().showMessage('Ready')

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Statusbar')    
        self.show()


def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

另一个代码示例:

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):      

        cb = QtGui.QCheckBox('Show title', self)
        cb.move(20, 20)
        cb.toggle()
        cb.stateChanged.connect(self.changeTitle)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('QtGui.QCheckBox')
        self.show()

    def changeTitle(self, state):

        if state == QtCore.Qt.Checked:
            self.setWindowTitle('QtGui.QCheckBox')
        else:
            self.setWindowTitle('')

def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

QMainWindow是一个理解像GUI一样的GUI元素的类

  • 工具栏,
  • 状态栏,
  • 中央部件,
  • 停靠区。

QWidget只是一个原始的小部件。

如果要为项目设置主窗口,请使用QMainWindow

如果要创建对话框(模式对话框),请使用QWidget ,或者更优选使用QDialog

如果您不打算使用菜单栏,工具栏或停靠小部件,它们对您来说都是一样的。 如果您将使用其中之一,请使用QMainWindow 并且不要忘记将setCentralWidget调用到主布局小部件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM