Pysides6 columnSpan 从设置向后
Pysides6 columnSpan backwards from setting
我正在尝试创建一个应用程序,其文件浏览器的宽度是选项卡窗格宽度的 1/5。
为什么布局 columnSpan 与我设置的相反?
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setWindowTitle("My App")
layout = QGridLayout()
layout.addWidget(FileTree(), 0, 0, 1, 1)
layout.addWidget(Tabs(), 0, 1, 1, 5)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
行列跨度是指布局的网格单元格,不是每行或每列的比例。
设置跨度意味着小部件(或布局)将占据该数量的单元格,而不是它会大 5 倍,因为每个单元格的大小取决于其内容的大小(和提示)。由于其他 4 列中没有其他内容,因此这些单元格实际上是 empty.
它的工作原理与 table 完全相同:当您 跨越 一个单元格使其占据 2 列,但第二列没有宽度时,该单元格将保留大小一样。
请注意,即使您在另一行和任何这些列中有小部件,这仍然不意味着选项卡小部件将占用 space 第一个,特别是如果这些小部件很小:QTreeView 继承 QAbstractItemView,默认情况下在两个方向上都有一个 expanding 大小策略。
要达到所需的比率,您必须使用 setColumnStretch()
,并且 不要 设置任何跨度,除非您确实需要它用于其他行中的小部件:
layout.addWidget(FileTree())
layout.addWidget(Tabs(), 0, 1)
layout.setColumnStretch(0, 1)
layout.setColumnStretch(1, 5)
我正在尝试创建一个应用程序,其文件浏览器的宽度是选项卡窗格宽度的 1/5。
为什么布局 columnSpan 与我设置的相反?
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setWindowTitle("My App")
layout = QGridLayout()
layout.addWidget(FileTree(), 0, 0, 1, 1)
layout.addWidget(Tabs(), 0, 1, 1, 5)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
行列跨度是指布局的网格单元格,不是每行或每列的比例。
设置跨度意味着小部件(或布局)将占据该数量的单元格,而不是它会大 5 倍,因为每个单元格的大小取决于其内容的大小(和提示)。由于其他 4 列中没有其他内容,因此这些单元格实际上是 empty.
它的工作原理与 table 完全相同:当您 跨越 一个单元格使其占据 2 列,但第二列没有宽度时,该单元格将保留大小一样。
请注意,即使您在另一行和任何这些列中有小部件,这仍然不意味着选项卡小部件将占用 space 第一个,特别是如果这些小部件很小:QTreeView 继承 QAbstractItemView,默认情况下在两个方向上都有一个 expanding 大小策略。
要达到所需的比率,您必须使用 setColumnStretch()
,并且 不要 设置任何跨度,除非您确实需要它用于其他行中的小部件:
layout.addWidget(FileTree())
layout.addWidget(Tabs(), 0, 1)
layout.setColumnStretch(0, 1)
layout.setColumnStretch(1, 5)