Qt TableWidget 有两行合中的一列合并 点击其中一行的其他列 两行全部选中
时间: 2024-02-26 22:58:26 浏览: 70
在Qt中,合并单元格只是在视觉上合并了多个单元格,但在逻辑上仍然是多个单元格。因此,在TableWidget中点击某个被合并的单元格时,会选择到所有被合并的单元格,包括其它行。如果你想要点击其中一行的其他列时,只选中该行,可以在单元格的选择事件中进行处理。例如,以下代码可以实现只选中其中一行:
```
void MyTableWidget::mousePressEvent(QMouseEvent *event)
{
QTableWidgetItem *item = itemAt(event->pos());
if (item && item->column() == mergedColumn) {
for (int i = 0; i < rowCount(); ++i) {
QTableWidgetItem *itm = item(i, mergedColumn);
if (itm && itm->row() != item->row()) {
itm->setSelected(false);
}
}
}
QTableWidget::mousePressEvent(event);
}
```
其中,`mergedColumn`表示已合并的单元格所在的列,上述代码在鼠标点击事件中判断当前选择的单元格是否在已合并单元格所在的列,如果是,则取消选择其他行的单元格。这样,即使多个单元格合并在一起,也可以实现只选择其中一行的功能。
阅读全文