如何更改 QTableWidget 的最小尺寸?
Posted
技术标签:
【中文标题】如何更改 QTableWidget 的最小尺寸?【英文标题】:How do you change the minimum size of a QTableWidget? 【发布时间】:2011-10-19 20:16:52 【问题描述】:我将一些 QTableWidget(s) 递归地嵌入到彼此内部。最终的 GUI 将有 4 到几千个方格。这是一个仅显示 16 个方块的示例屏幕截图:
因为需要显示的方块太多(数千个),我需要每个方块的最小尺寸为 5x5 像素。
问题是我使用鼠标将窗口的大小尽可能小...然后我得到了您在屏幕截图中看到的内容!屏幕截图的每个正方形大约为 18x18 像素……这还不足以在屏幕上容纳数千个正方形。 有些东西让我无法使用鼠标来缩小方块的大小!
如何使此屏幕截图中的正方形的最小尺寸更小?
main.cpp:
#include "TableWidget.h"
int main(int argc, char *argv[])
QApplication a(argc, argv);
TableWidget *x1 = new TableWidget(2,2);
for(int i = 0; i < x1->rowCount(); i++)
for(int j = 0; j < x1->columnCount(); j++)
x1->setCellWidget(i,j,new TableWidget(2,2));
QGridLayout *layout = new QGridLayout;
layout->addWidget(x1, 0, 0);
QWidget *window = new QWidget;
window->setLayout(layout);
window->show();
return a.exec();
TableWidget.h:
class TableWidget : public QTableWidget
Q_OBJECT
public:
TableWidget(int rows, int columns, QWidget *parent = 0);
private:
signals:
public slots:
;
TableWidget.cpp:
TableWidget::TableWidget(int rows, int columns, QWidget *parent) :
QTableWidget(rows,columns,parent)
//------
QTableWidget::horizontalHeader()->hide();
QTableWidget::verticalHeader()->hide();
//------
QTableWidget::horizontalHeader()->setResizeMode(QHeaderView::Stretch);
QTableWidget::verticalHeader()->setResizeMode(QHeaderView::Stretch);
//------
QTableWidget::setEditTriggers(QAbstractItemView::NoEditTriggers);
//------
QTableWidget::setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
QTableWidget::setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
//------
QTableWidget::horizontalHeader()->setMinimumSectionSize(1);
QTableWidget::verticalHeader()->setMinimumSectionSize(1);
QTableWidget::horizontalHeader()->setDefaultSectionSize(1);
QTableWidget::verticalHeader()->setDefaultSectionSize(1);
// FIXME, the minimum size is not 1 pixel... it is like 10 pixels...
//------
QTableWidget::setSelectionMode(QAbstractItemView::NoSelection);
更新 - 根据下面的 cmets,我尝试渲染更多正方形,这里是 1024:
【问题讨论】:
在 Windows 操作系统上,有一个最小窗口大小,大致就是这么宽,我敢打赌其他操作系统也有限制。我敢打赌,这不是小部件的限制,而是操作系统的限制。使用 10000 个小部件对其进行测试,看看当您使窗口尽可能小时会发生什么。 用 256+ 个方格测试,告诉我们每个方格有多大。 @MooingDuck 这些不是“窗口”。有一个 QWidget 和一堆 QTableWidgets(实际上是 TableWidgets)。仅供参考,QTableWidget 的类层次结构:QTableWidget --> QTableView --> QAbstractItemView --> QAbstractScrollArea --> QFrame --> QWidget --> QObject and QPaintDevice
(我会尝试更多的方块)
在我的 WindowsXP 上,我无法缩小大多数低于 148x96 的程序。它可能与您的小部件完全无关。
我刚刚用 1024 个正方形填充了窗口,并且能够将窗口缩小到 108x142 像素。所以限制在于 GUI 窗口不会变小,而不是 QTableWidget。也许 QWidget 的默认最小尺寸为 108x142 像素?
【参考方案1】:
在我的 WindowsXP 上,我无法将大多数程序缩小到 148x96 以下。它可能与您的小部件完全无关。
测试超过 256 个方块,并告诉我们每个方块有多大。
Windows(以及您使用的任何软件)都有此限制,以确保用户能够看到顶部的按钮、标题的几个字母以及足够的滚动条空间。所以用户不会丢失他们缩小到 3x2px 的程序。
【讨论】:
以上是关于如何更改 QTableWidget 的最小尺寸?的主要内容,如果未能解决你的问题,请参考以下文章
如何更改 qtablewidget 项的 qtooltip 的背景颜色?
如何在pyqt中更改Qtablewidget的特定单元格背景颜色
有啥方法可以创建密钥大小为 512 的 JWT 令牌?并更改 AsymmetricSignatureProvider 的默认最小尺寸要求