gpt4 book ai didi

Qt QTableView 在事件单元格周围绘制边框

转载 作者:行者123 更新时间:2023-12-04 15:26:33 33 4
gpt4 key购买 nike

我正在尝试在 QTableView 中实现类似于 Excel 的行为,其中在整个当前选择周围绘制了一个边框。我已经尝试过这种感觉就像一百种不同的方法并且不断遇到问题。我可以很容易地绘制边框,但是只要选择更改,就会留下边框的残留物。这是我在 QTableView::paintEvent 中尝试过的一个示例...


void MyTableView::paintEvent(QPaintEvent* event)
{
// call QTableView's paint event first so we can draw over it
QTableView::paintEvent(event);

// activeSelection is a list of indexes that is updated in another function
// the function also calls QTableView::repaint whenever this list changes
// in an attempt to erase the previously drawn border
if(!activeSelection.size())
return;

QRect rect = visualRect(activeSelection.at(0)) |
visualRect(activeSelection.at(activeSelection.size() - 1));
// temporarily draw smaller border so it doesn't lie on the grid lines
rect.adjust(4, 4, -4, -4);
QPen pen(Qt::black, 2);
QPainter painter(viewport());
painter.setPen(pen);
painter.drawRect(rect);
}

该代码产生的结果如 this

我会喜欢任何关于如何使这个运行更顺利的建议。我曾尝试在委托(delegate)中执行此操作,但是委托(delegate)需要知道所有选择的索引,并且它无法在 QTableView 绘制的网格线上绘制。另外,我的表格类需要知道边框的绘制位置。

最佳答案

尝试调用 update();在您的 selectionChanged 函数中。这会减慢您的实现速度,但会删除垃圾。

关于Qt QTableView 在事件单元格周围绘制边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6515695/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com