Pyqt中的QDialog与QMainWindow的转换
前言
前两天看到了一个Blog里实现了用python3 和Pyqt5构建一个Page Designer的小程序。链接如下:http://blog.sina.com.cn/s/blog_c22e36090102x1p3.html
其界面如下:
但是这里有个问题,没有最大化和最小化的按钮。在代码中我们看到这样的一段:
class MainForm(QDialog):
def __init__(self, parent=None):
super(MainForm, self).__init__(parent)
self.filename = ""
self.copiedItem = QByteArray()
self.pasteOffset = 5
self.prevPoint = QPoint()
self.addOffset = 5
self.borders = []
self.printer = QPrinter(QPrinter.HighResolution)
self.printer.setPageSize(QPrinter.Letter)
可以看到这里的主界面是使用了QDialog来实现的。那么我们把他改成QMainWindow会发生怎么样的情况呢?
首先就是from PyQt5.QtWidgets import QMainWindow要加上,不然就会报告图片中的错误。
然后我们看到的是:
是的!一个白板,在控制台中,有信息输出:
说是已经有了一个layout。这个是因为QMainWindow本来就是带有一个layout的,而QDialog就不一样了,在QDialog中直接self.setLayout(layout)就可以了。
但是在QMainWindow中我们需要先加入一个控件,然后才能把layout加入进去,这样。我们可以看到仅仅添加代码:
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
就可以QDialog到QMainWindow的转换。
OK我们看到这样窗口中就有了最大化与最小化了!