我对PyQt 5很陌生,仍然在挣扎。我试了一整天在QGroupBox中添加行和列。我找到的唯一解决方案是添加一个QTableWidget,问题是Widget的大小。
现在我只想有这个表的头,用户可以在这个表中添加行。[ID,姓名]
我想要细胞,但不是随之而来的“窗口”。如果我试图将它对齐在QGroupBox的中心,它会将整个东西对齐在中心,而不是列。(列在小部件的左上角,见图)
x1c 0d1x的数据
这是创建表的代码片段:
创建盒子
self.groupbox1 = QGroupBox('Data')
self.groupbox1.setMaximumWidth(350)
self.groupbox1.setMaximumHeight(400)
self.layout = QVBoxLayout()
self.groupbox1.setLayout(self.layout)
self.layout.addWidget(self.groupbox1)
字符串
创建QTableWidget
self.table_widget = QTableWidget()
self.table_widget.setColumnCount(2)
self.table_widget.setHorizontalHeaderLabels(['ID', 'Data'])
self.table_widget.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
self.table_widget.resizeColumnsToContents()
self.table_widget.setMaximumSize(200, 200)
self.upper_layout.setAlignment(Qt.AlignCenter)
self.upper_layout.addWidget(self.table_widget)
型
我唯一找到的是.resizeColumnsToContents和.setSectionResizeMode,这只是根据其中的内容调整列。
通过设置表格小部件的最大大小,我使它变小了,但这不是我想要的。如果有更多的数据添加到表中,用户必须滚动,因为小部件不够大。难道没有什么东西可以自动调整吗?
还是有其他解决问题的方法?用户可以选择要显示的数据(将添加哪一行)的按钮应位于中间行的正下方,如果行被删除/添加,则自动向上/向下移动。如果我必须有一个固定大小的QTableWidget,这也是不可能的。
希望我解释得够好。我感谢每一个能让我更接近答案的答案。:)(是的,我已经看了Stack Overflow上所有相关的帖子,可能每隔一页都看了,可惜没有解决我的问题)
2条答案
按热度按时间vxbzzdmp1#
字符串
尝试一下,并将其调整到您的项目中。
这是输出:
x1c 0d1x的数据
版本2023-07-26首码:
型
试试这个,我已经调整了大小,并阻止了ID项链和名称列自动调整大小
这是输出:
的
版本2023-07-26秒码:
型
尝试一下,并将其调整到您的项目中。
这是输出:
的
nsc4cvqm2#
这是Francesca Mazzeo回答的修改版本。它使用一个子类
QTableWidget
和一个重新实现的resizeEvent()
方法来获得“随添加的行而增长”的行为。有件奇怪的事我不明白添加第一行不会触发
resizeEvent()
。后面的行可以。我以任何方式发布这个,希望有人知道如何解决这个问题。
字符串
编辑:
使用musicamente的注解创建了新的QTablewidget子类:
型