Qt QTableWidget如何设置单个单元格的边框颜色

大家都知道通过样式表可以设置表格的整体样式:
QTableWidget * table = new QTableWidget(this);
table->setStyleSheet(“QTableWidget{border-top:1px solid blue;
border-left:1px solid blue;
border-right:1px solid blue;
border-bottom:1px dashed blue;}”);
但如果想设置某个具体单元格的边框样式,这个方法就不适用了。
思路一:表格里嵌套其它控件。
比如说嵌套个一行一列的表格,隐藏行头和列头,对这个表格的边框设置就等于对这个唯一单元格的边框设置了。
QTableWidget * table2 = new QTableWidget(1, 1, this);
table2->setStyleSheet(“QTableWidget{border-top:1px solid blue;
border-left:1px solid blue;
border-right:1px solid blue;
border-bottom:1px dashed blue;}”);
table2->horizontalHeader()->setVisible(false);
table2->verticalHeader()->setVisible(false);
table->setCellWidget(1, 1, table2);
或是嵌套一个QTextEdit,这个控件的边框设置与表格类似。
有些不需要编辑的情况下,也可以嵌套一个QLabel。
思路二:
自定义表格控件,从QTableWidget派生,重写Painter函数。但这样用起来并没有第一种方法灵活。
大家还有没有其它思路呢?欢迎留言讨论。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要为QTableWidget中的单个单元格设置代理,可以使用`setItemDelegate`方法。下面是一个简单的示例代码,其中我们将为第一行第一列的单元格设置代理: ```python from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QItemDelegate, QSpinBox class MyDelegate(QItemDelegate): def createEditor(self, parent, option, index): editor = QSpinBox(parent) editor.setMinimum(0) editor.setMaximum(100) return editor app = QApplication([]) table = QTableWidget(3, 3) delegate = MyDelegate(table) item1 = QTableWidgetItem('A') item2 = QTableWidgetItem('B') item3 = QTableWidgetItem('C') table.setItem(0, 0, item1) table.setItem(0, 1, item2) table.setItem(0, 2, item3) table.setItemDelegateForColumn(0, delegate) # 设置第一列的代理 table.setItemDelegateForRow(0, delegate) # 设置第一行的代理 table.setItemDelegate(0, 0, delegate) # 设置第一行第一列的代理 table.show() app.exec_() ``` 在这个例子中,我们创建了一个名为`MyDelegate`的子类,继承自`QItemDelegate`。我们重写了`createEditor`方法,该方法在需要编辑单元格时被调用。在这个例子中,我们创建了一个QSpinBox作为编辑器,并将其返回。 接下来,我们创建了一个QTableWidget并将代理设置为我们刚刚创建的`MyDelegate`实例。我们使用`setItemDelegateForColumn`方法将代理应用于第一列,使用`setItemDelegateForRow`方法将代理应用于第一行,使用`setItemDelegate`方法将代理应用于第一行第一列的单元格。 最后,我们创建了一些QTableWidgetItem并将它们放入表格中。当您单击第一行第一列中的单元格时,将显示QSpinBox编辑器。 希望这个例子能帮助您实现QTableWidget中的单个单元格设置代理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码猿杂谈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值