QTableWidget合并单元格,通过item()还是找到之前被合并的单元格,怎么解决?

被风拿走的思念 2016-09-01 06:15:49
网上有一篇博文将将合并单元格后,被合并的单元格的索引都指向第一个单元格,为啥我用item()还是能找到被合并单元格里面的内容呢?
贴图如下: 图片是我根据单元格的内容用QPainter和QImage绘制的。
合并之前:


合并之后:


获取单元格的代码:

for(int nRow = 0;nRow<tableWidget->rowCount();nRow++)
{
for(int nColumn = 0;nColumn<tableWidget->columnCount();nColumn++)
{
tableWidgetItem = tableWidget->item(nRow,nColumn);
//绘制单元格
DrawTableItem(w,h,tableWidget->columnWidth(nColumn),tableWidget->rowHeight(nRow),tableWidgetItem,painter);
w += tableWidget->columnWidth(nColumn);
}
w = x;
h += tableWidget->rowHeight(nRow);
}
...全文
1483 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_42006929 2018-10-11
  • 打赏
  • 举报
回复
楼主,我想问一下,我现在是从excel中显示数据到表格中,又合并了需要并合的单元格,但是界面并不显示合并后的表格,该怎么解决呢?
  • 打赏
  • 举报
回复 1
找到了,原来rowSpan和columnSpan就是返回这些信息的。妹的,英文看的还是不够细。以为和setSpan是一样的功能呢。结贴
  • 打赏
  • 举报
回复
引用 2 楼 u013466477 的回复:
单元格被合并,应该知道自己被合并吧?? 怎么合并的
从源码上看,还是有记录单元格合并信息的"容器"。我研究下,看有什么有意思的地方没有
void QTableViewPrivate::setSpan(int row, int column, int rowSpan, int columnSpan)
{
    if (Q_UNLIKELY(row < 0 || column < 0 || rowSpan <= 0 || columnSpan <= 0)) {
        qWarning("QTableView::setSpan: invalid span given: (%d, %d, %d, %d)",
                 row, column, rowSpan, columnSpan);
        return;
    }
    QSpanCollection::Span *sp = spans.spanAt(column, row);
    if (sp) {
        if (sp->top() != row || sp->left() != column) {
            qWarning("QTableView::setSpan: span cannot overlap");
            return;
        }
        if (rowSpan == 1 && columnSpan == 1) {
            rowSpan = columnSpan = 0;
        }
        const int old_height = sp->height();
        sp->m_bottom = row + rowSpan - 1;
        sp->m_right = column + columnSpan - 1;
        spans.updateSpan(sp, old_height);
        return;
    } else if (Q_UNLIKELY(rowSpan == 1 && columnSpan == 1)) {
        qWarning("QTableView::setSpan: single cell span won't be added");
        return;
    }
    sp = new QSpanCollection::Span(row, column, rowSpan, columnSpan);
    spans.addSpan(sp);
}
  • 打赏
  • 举报
回复
引用 2 楼 u013466477 的回复:
单元格被合并,应该知道自己被合并吧?? 怎么合并的
我也这么认为,应该有类似IsMerger,getMergerRange 这样的API,但是没有。。。 现在没有辙了,我准备自己记录合并单元格的操作。
冷静忍耐 2016-09-01
  • 打赏
  • 举报
回复
单元格被合并,应该知道自己被合并吧?? 怎么合并的
  • 打赏
  • 举报
回复
QTableWidget和QTableView我也找了,也没有找到有获取合并单元格范围的函数。。。。。

16,235

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧