【问题标题】:How can I make PyQt QSplitter visible?如何使 PyQt QSplitter 可见?
【发布时间】:2012-09-13 17:40:57
【问题描述】:

我可以定义 QSplitter 对象的宽度/高度吗?我可以用适当的箭头使其可见吗?

【问题讨论】:

    标签: pyqt qsplitter


    【解决方案1】:

    在我的 C++ 代码中,我使用 QSplitter::setHandleWidth()

    调整高度可能需要调整容器本身的高度。

    【讨论】:

      【解决方案2】:

      以下是覆盖 QSplitter 类以使拆分器具有一些图标以让用户知道他们可以调整小部件大小的方法,请参阅图像以获取输出。

      from PyQt5.QtCore import *
      from PyQt5.QtGui import *
      from PyQt5.QtWidgets import *
      import sys
      
      class Handle(QWidget):
          def paintEvent(self, e=None):
              painter = QPainter(self)
              painter.setPen(Qt.NoPen)
              painter.setBrush(Qt.Dense6Pattern)
              painter.drawRect(self.rect())
      
      class customSplitter(QSplitter):
          def addWidget(self, wdg):
              super().addWidget(wdg)
              self.width = self.handleWidth()
              l_handle = Handle()
              l_handle.setMaximumSize(self.width*2, self.width*10)
              layout = QHBoxLayout(self.handle(self.count()-1))
              layout.setSpacing(0)
              layout.setContentsMargins(0,0,0,0)
              layout.addWidget(l_handle)
      
      class Window(QMainWindow):
          def setUI(self, MainWindow):
              self.splt_v = customSplitter(Qt.Vertical)
              self.splt_v.setHandleWidth(8)
              self.splt_v.addWidget(QGroupBox("Box 1"))
              self.splt_v.addWidget(QGroupBox("Box 2"))
              self.splt_v.addWidget(QGroupBox("Box 3"))
      
              self.wdg = QWidget()
              self.v_lt = QVBoxLayout(self.wdg)
              self.v_lt.addWidget(self.splt_v)
      
              self.spl_h = customSplitter()
              self.spl_h.addWidget(self.wdg)
              self.spl_h.addWidget(QGroupBox("Box 4"))
              self.spl_h.addWidget(QGroupBox("Box 5"))
      
              self.h_lt = QHBoxLayout()
              self.h_lt.addWidget(self.spl_h)
              self.w = QWidget()
              self.w.setLayout(self.h_lt)
              self.w.setGeometry(0,0,1280,720)
              self.w.show()
      
      if __name__ == '__main__':
          app = QApplication(sys.argv)
          MainWindow = QMainWindow()
          ui = Window()
          ui.setUI(MainWindow)
          sys.exit(app.exec_())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多