微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

最后一个空列填充QTableView

如何解决最后一个空列填充QTableView

QTableView中,我需要最后一列(最右边)为空,可扩展但不可移动。目的是使表格不要突然结束(因为我在行中使用了其他颜色)或很难向右扩展。在QHeaderView中有一个setFirstSectionMovable(bool);在最后一节中,我需要类似的内容,让其余部分可以移动。 (换句话说:用一个空白的不可移动列填充表格的其余部分)。任何线索如何实现这一目标?

我确实重写了mousepressEvent()的子类中的QHeaderView来跳过最后一节,但是仍然可以通过将其他列移到其位置来移动它,并且我不知道如何防止这种情况。 / p>

解决方法

AMOQ:

成为 HeaderView QHeaderView 的子类,并拥有

setSectionsMovable(true);
setStretchLastSection(true);

处理 sectionMoved 信号:

connect(this,&QHeaderView::sectionMoved,[this](int,int,int newVisual) {                
  if(newVisual == count()-1) { moveSection(newVisual,newVisual-1); }
});

覆盖 mousePressEvent

void HeaderView::mousePressEvent(QMouseEvent* event) {    
int logicalIdx = logicalIndexAt(event->pos());       
if(logicalIdx != count()-1) { QHeaderView::mousePressEvent(event); }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。