如何摆脱 QTableWidget 中的这个空白?

Posted

技术标签:

【中文标题】如何摆脱 QTableWidget 中的这个空白?【英文标题】:How do I get rid of this whitespace in my QTableWidget? 【发布时间】:2012-01-20 21:18:54 【问题描述】:

如何去除应用程序中的空白:

我想去掉 QTableWidget 中的空白(蓝色箭头)。我该怎么做?

这是我的应用程序的代码:

    gridLayout = QGridLayout()

    #add other widgets

    currentItemsTable = QTableWidget(4, 2)
    currentDeviceIconLabel = QLabel("Current Device Icon: ")
    self.currentDeviceIcon = QLabel()
    currentAppIconLabel = QLabel("Current App Icon: ")
    self.currentAppIcon = QLabel()
    currentTitleLabel = QLabel("Current Title: ")
    self.currentTitle = QLabel(self.getCurrentTitle())
    currentSubtitleLabel = QLabel("Current Subtitle: ")
    self.currentSubtitle = QLabel(self.getCurrentSubtitle())

    currentItemsTable.setCellWidget(0, 0, currentDeviceIconLabel)
    currentItemsTable.setCellWidget(0, 1, self.currentDeviceIcon)
    currentItemsTable.setCellWidget(1, 0, currentAppIconLabel)
    currentItemsTable.setCellWidget(1, 1, self.currentAppIcon)
    currentItemsTable.setCellWidget(2, 0, currentTitleLabel)
    currentItemsTable.setCellWidget(2, 1, self.currentTitle)
    currentItemsTable.setCellWidget(3, 0, currentSubtitleLabel)
    currentItemsTable.setCellWidget(3, 1, self.currentSubtitle)
    currentItemsTable.horizontalHeader().hide()
    currentItemsTable.resizeColumnsToContents()
    currentItemsTable.resizeRowsToContents()
    currentItemsTable.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
    gridLayout.addWidget(currentItemsTable, 1, 4, 8, 2)

此外,如何让 QTableWidget 随行和列内容调整大小?我不想要任何滚动条。

【问题讨论】:

我认为,最好的解决方案是根本不使用QTableWidget!您可以使用QGridLayout 轻松完成此类操作 @Lol4t0 我不喜欢没有 QTableWidget 的小部件的外观。我想要白色背景和网格线。 您可以将背景设置为白色,并将QFrames 用于网格线 【参考方案1】:

我认为你应该使用这个:

currentItemsTable.horizontalHeader().setStretchLastSection(True)
currentItemsTable.verticalHeader().setStretchLastSection(True)

你应该在 resize....toContents() 之后调用它,并且任何时候你要调整内容的大小时,你应该首先 setStretchLastSection(False),比如:

currentItemsTable.verticalHeader().setStretchLastSection(False)
currentItemsTable.resizeRowsToContents()
currentItemsTable.verticalHeader().setStretchLastSection(True)

否则你会在调整大小时得到奇怪的效果。

【讨论】:

最后一个单元格拉伸后有没有办法平衡分布? 您可以计算标题的宽度并使用 QtableView.setColumnWidth (column, width) 对每一列进行平衡调用,可能您需要将最后一列设置得更大一些以避免调用 setStretchLastSection(True) 为您创建一个水平滚动条,但我没有尝试过。在拉伸最后一部分之前调整列的大小,我没有尝试过,但通常如果这不是你做的最后一件事,你就会遇到问题。

以上是关于如何摆脱 QTableWidget 中的这个空白?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 QTableWidget 的列占据最大空间?

单击表格 qtableWidget 的空白区域

如何摆脱从 s-s-rS 导出的 PDF 中的空白页

QT如何设置QTableWidget控件占满下方?

如何摆脱自定义底部导航栏颤动周围的空白?

折叠 TableViewCell 时如何摆脱不需要的空白