zoukankan      html  css  js  c++  java
  • 布局管理之 QLayout

    QLayout 描述:

    布局管理器的最基的基类:

    它是一个抽象类,我们这里直接用它的子类QBoxLayout 来说它!

    QLayout 功能作用:

    构造函数:

    QLayout 中布局管理器的嵌套(添加子布局):

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QLayout 的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
            label1= QLabel("标签1")
            label1.setStyleSheet("background-color:red;")
            label2= QLabel("标签2")
            label2.setStyleSheet("background-color:green;")
            label3= QLabel("标签3")
            label3.setStyleSheet("background-color:yellow;")
    
            #
            boxLayout = QBoxLayout(QBoxLayout.BottomToTop)
    
            boxLayout.addWidget(label1)
            boxLayout.addWidget(label2)
            boxLayout.addWidget(label3)
    
            boxLayout.setSpacing(60)
            boxLayout.setContentsMargins(0,0,0,0)
    
            #替换子控件
            label4 = QLabel("标签4")
            label4.setStyleSheet("background-color:orange;")
            boxLayout.replaceWidget(label2,label4)
            #替换后一般要隐藏要替换的
            label2.hide()
            #删除 label2  的特殊方式,就是让它的父控件为None
            label2.setParent(None)  #这也释放了label2 ,如果要验证它,可以通过信号
    
    
            #添加子布局 (布局的嵌套)
            label5= QLabel("标签5")
            label5.setStyleSheet("background-color:pink;")
            label6= QLabel("标签6")
            label6.setStyleSheet("background-color:blue;")
            label7= QLabel("标签7")
            label7.setStyleSheet("background-color:cyan;")
    
            h_layout = QBoxLayout(QBoxLayout.LeftToRight) #水平布局
    
            h_layout.addWidget(label5)
            h_layout.addWidget(label6)
            h_layout.addWidget(label7)
    
            boxLayout.addLayout(h_layout)
            #添加子布局 (布局的嵌套)
    
            self.setLayout(boxLayout)
    
    
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    View Code

    QLayout 设置能用性:

    from PyQt5.Qt import * #刚开始学习可以这样一下导入
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("QLayout 的学习")
            self.resize(400,400)
            self.set_ui()
    
    
        def set_ui(self):
            label1= QLabel("标签1")
            label1.setStyleSheet("background-color:red;")
            label2= QLabel("标签2")
            label2.setStyleSheet("background-color:green;")
            label3= QLabel("标签3")
            label3.setStyleSheet("background-color:yellow;")
    
            #
            boxLayout = QBoxLayout(QBoxLayout.BottomToTop)
    
            boxLayout.addWidget(label1)
            boxLayout.addWidget(label2)
            boxLayout.addWidget(label3)
    
            boxLayout.setSpacing(60)
            boxLayout.setContentsMargins(0,0,0,0)
    
            #设置能用性
            boxLayout.setEnabled(False)
    
            self.setLayout(boxLayout)
    
    
    if __name__ == '__main__':
        app =QApplication(sys.argv)
    
        window = Window()
        window.show()
    
        sys.exit(app.exec_())
    View Code

    总结:

    以上就是QLayout 提供的功能。

    下面看QBoxLayout 中提供了哪些功能:https://www.cnblogs.com/zach0812/p/11400042.html

  • 相关阅读:
    分享:CodeLite 5.1 发布,C++ 集成开发环境
    Elementary Sockets:readn, writen, and readline Functions
    How to handle boost::iostreams::gzip_dec C++ Forum
    分享:python/c++ 深拷贝与浅拷贝(转)写∽好
    我刚刚通过 @盛大网盘EverBox 分享了 Web协议与实践HTTP.、网络协议、缓存技术和....pdf, 欢迎大家下载!
    Is zlib threadsafe?
    print "\v"
    分享:混合编译c和cpp的makefile模板
    Elementary Sockets:readn, writen, and readline Functions
    c的socket教程 二进制 博客频道 CSDN.NET
  • 原文地址:https://www.cnblogs.com/zach0812/p/11400028.html
Copyright © 2011-2022 走看看