Qt学习教程之表格控件蚂蚁线详解

2020-01-06 19:18:11王冬梅

根据蚂蚁线的偏移绘制开始的空白区域,蚂蚁线是由7个像素的蓝色和2个像素的空白循环组成,当偏移10个像素时,重新回到偏移1个像素。


if (startPoint != truthPoint && offset > 2)
{
 QPolygon polygon;
 for (int i = 4; i <= offset; ++i)//绘制前边偏移的像素
 {
 if (polygon.size() >= 7)
 {
  break;
 }
 polygon.append(truthPoint - QPoint(i , 0));
 }
 painter->drawPoints(polygon);
}

4、界面刷新

qt自己又自己的界面刷新策略,平时使用比较多的也不外乎update(建议刷新)、repaint(强制刷新)两个接口,但是这个两个接口调用时也不是说界面肯定会刷新,其实这两个接口都是使用QWidgetBackingStoreTracker类的senUpdateRequest接口类来抛出的刷新界面事件,Qt窗口有一个dirtyWidget的概念,当判定这个窗口为需要刷新的窗口时才会调用sendUpdateRequest接口进行界面刷新,如下代码,update和repaint区别在于调用了switch的不同分支。


void QWidgetBackingStore::sendUpdateRequest(QWidget *widget, UpdateTime updateTime)
{
 if (!widget)
 return;
 
 switch (updateTime) {
 case UpdateLater:
 updateRequestSent = true;
 QApplication::postEvent(widget, new QEvent(QEvent::UpdateRequest), Qt::LowEventPriority);
 break;
 case UpdateNow: {
 QEvent event(QEvent::UpdateRequest);
 QApplication::sendEvent(widget, &event);
 break;
 }
 }
}

对于表格控件当我们单纯调用repaint或者update函数时是不能起到刷新界面的作用,因此我们需要调用其他能直接导致界面刷新的接口,目前我这块想到了直接调用窗口自身style的polish方法,如果大家有其他好的刷新方式可以留言。
通过以上4个小点的说明,蚂蚁线的实现基本就完成了。需要完整源码的去csdn下载吧

四、下载链接

Qt蚂蚁线-表格

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ASPKU的支持。