如何去除QTableWidget表格选中Item时的虚线框?

默认情况下QTableWidget单元格选中时会有一个虚线框,如下图所示:

 

有这个虚线框的存在很是影响美观,尤其是在写了样式表的时候特别明显。那么该如何去除该虚线框呢?

 

方法1:

设置表格不获取焦点。

table->setFocusPolicy(Qt::NoFocus);

 

这种方法简单粗暴,缺点就是这样设置后没法使用与focus状态相关的功能,如不能使用tab键切换选中的单元格。

 

方法2:

使用样式表,设置outline为none,并且设置item的样式。

 

使用样式表方式很灵活,很适合自定义表格外观的情况。

 

方法3:

使用代理。 从QStyledItemDelegate派生一个类TableDelegate, 然后重写paint函数。

 

代码的目的是通过改变option的值,在绘制前去掉focus状态,这样在绘制表格时就不会绘制虚线框了。最后为表格设置代理,代码如下:

 

使用代理更适合实现更高级的功能,如果只是单纯为了去除虚线框的话,这样操作就略显麻烦了。

 

说明:  文章首发于fearlazy的博客,文章中发现的错误或者内容补充将只能在博客中更新。

  • 13
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
要在QTableWidget中添加单选,可以使用QComboBox或QRadioButton作为QTableWidget单元格的编辑器。 以下是一个示例代码,展示如何在QTableWidget中添加单选: ```python from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QRadioButton, QHBoxLayout, QWidget class MyTable(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('Table with Radio Buttons') self.setGeometry(300, 300, 400, 200) self.tableWidget = QTableWidget(self) self.tableWidget.setGeometry(50, 50, 300, 120) self.tableWidget.setRowCount(2) self.tableWidget.setColumnCount(2) for i in range(self.tableWidget.rowCount()): for j in range(self.tableWidget.columnCount()): if j == 0: rb = QRadioButton() hbox = QHBoxLayout() hbox.setAlignment(0x0001) # Qt::AlignCenter hbox.addWidget(rb) w = QWidget() w.setLayout(hbox) self.tableWidget.setCellWidget(i, j, w) else: item = QTableWidgetItem('Item(%d,%d)' % (i,j)) self.tableWidget.setItem(i, j, item) self.show() if __name__ == '__main__': app = QApplication([]) table = MyTable() app.exec_() ``` 在这个示例中,我们创建了一个带有两行两列的QTableWidget,并将RadioButton添加到第一列的单元格中。我们使用QHBoxLayout来对RadioButton进行居中布局,并使用QWidget将RadioButton放到单元格中。在第二列中,我们添加了普通的QTableWidgetItem。 这个方法可以用于添加其他类型的单选,例如QComboBox。只需将QRadioButton替换为QComboBox即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fearlazy

打赏是不可能的

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

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

打赏作者

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

抵扣说明:

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

余额充值