Qt TableWidget 有两行合中的一列合并 点击其中一行的其他列 两行都可以选中
时间: 2024-02-26 18:58:23 浏览: 110
这是由于在Qt中,合并单元格只是在视觉上合并了多个单元格,但在逻辑上仍然是多个单元格,这就导致了在TableWidget中选择某个已合并的单元格时,会选择到所有被合并的单元格。
如果你想要只选择其中一行的其他列,可以在单元格的选择事件中进行处理。例如,以下代码可以实现仅选中一个合并单元格中的某一行:
```
void MyTableWidget::mousePressEvent(QMouseEvent *event)
{
QTableWidgetItem *item = itemAt(event->pos());
if (item && item->row() == mergedRow) {
for (int i = 0; i < columnCount(); ++i) {
QTableWidgetItem *itm = item(i);
if (itm && itm->row() != mergedRow) {
itm->setSelected(false);
}
}
}
QTableWidget::mousePressEvent(event);
}
```
其中,`mergedRow`表示已合并的单元格所在的行,上述代码在鼠标点击事件中判断当前选择的单元格是否在已合并单元格所在的行,如果是,则取消选择其他行的单元格。这样,即使多个单元格合并在一起,也可以实现只选择其中一行的功能。
相关问题
Qt TableWidget 有两行合中的一列合并 点击其中一行的其他列 两行全部选中
在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`表示已合并的单元格所在的列,上述代码在鼠标点击事件中判断当前选择的单元格是否在已合并单元格所在的列,如果是,则取消选择其他行的单元格。这样,即使多个单元格合并在一起,也可以实现只选择其中一行的功能。
晶圆键合中CMP是什么
CMP,全称为Chemical Mechanical Polishing(化学机械抛光),是半导体制造过程中晶圆制程的一个重要步骤。它发生在光刻和离子注入等微观加工之后,用于平整表面并去除由于这些工艺产生的多余材料。CMP通过结合化学处理和物理研磨的方式,使得硅晶片表面达到高度平坦,这对于电子元件的集成以及后续的光刻精确度至关重要。这个过程通常使用特殊的抛光液和旋转工具共同作用,以实现精细的表面处理。
阅读全文