python - 删除 QTableWidget 单元格中的空间
问题描述
我想把一个QLineEdit
和放在QLable
同一个单元格中QTableWidget
。这个单元格小部件创建了下面我从互联网修改的代码。
class HiddenLabel(QLabel):
'''
QLable hide when mouse pressed
'''
def __init__(self, buddy, taskline, parent = None):
super(HiddenLabel, self).__init__(parent)
self.setFixedHeight(30)
self.buddy = buddy
self.taskline = taskline
# When it's clicked, hide itself and show its buddy
def mousePressEvent(self, event):
# left click to edit
if event.button() == QtCore.Qt.LeftButton:
self.hide()
self.buddy.setText(self.taskline.plain_text)
self.buddy.show()
self.buddy.setFocus() # Set focus on buddy so user doesn't have to click again
class EditableCell(QWidget):
'''
QLineEdit show when HiddenLabel is hidden
'''
def __init__(self, taskline, parent = None):
super(EditableCell, self).__init__(parent)
self.taskline = taskline
# Create ui
self.myEdit = QLineEdit()
self.myEdit.setFixedHeight(30)
self.myEdit.hide() # Hide line edit
self.myEdit.editingFinished.connect(self.textEdited)
# Create our custom label, and assign myEdit as its buddy
self.myLabel = HiddenLabel(self.myEdit, self.taskline)
self.myLabel.setText(self.taskline.enrich_text())
# Change vertical size policy so they both match and you don't get popping when switching
#self.myLabel.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
# Put them under a layout together
hLayout = QHBoxLayout()
hLayout.addWidget(self.myLabel)
hLayout.addWidget(self.myEdit)
self.setLayout(hLayout)
def textEdited(self):
# If the input is left empty, revert back to the label showing
print('edit finished')
print(self.myEdit.text())
taskline = TaskLine()
taskline.parser(self.myEdit.text())
self.taskline = taskline
self.myLabel.setText(taskline.enrich_text())
self.myEdit.hide()
self.myLabel.show()
通过左键单击
,单元格将在QLineEdit
和之间更改。
如屏幕截图所示,我想删除单元格边框和单元格小部件之间的空白区域。QLabel
我认为可以通过样式设置进行调整,但是我没有找到任何有关Qt样式设置的有用文档。我希望有人可以提供一些用处
解决方案
您必须将布局边距设置为 0:
hLayout.setContentsMargins(0, 0, 0, 0)
因为正如文档指出的那样,它们取决于样式和平台:
void QLayout::setContentsMargins(int left, int top, int right, int bottom)
设置要在布局周围使用的左、上、右和下边距。
默认情况下,QLayout 使用样式提供的值。在大多数平台上,所有方向的边距都是 11 像素。
推荐阅读
- javascript - 如何将 vue-gapi 插件与 router.js 和路由器保护一起使用
- json - 如何将所有内容配置到一个或多个配置文件中
- python - 与 aiosqlite 的多个连接
- reactjs - “刷新”按钮是否是 forceUpdate() 的合适用例?
- python - 我想在 django rest 框架中更改所需的消息
- java - 无法在数组类型 double[][] 上调用 getTotal()?
- r - 我可以根据表中的列为节点设置颜色吗?
- c# - 在 WPF 中打一个问号
- python - 在堆栈中,如何让 elif 在 if 之后运行?
- playframework - JSON 的 Play Framework 分块响应处理