QTableView锁定选区

举报
Amrf 发表于 2020/06/03 10:48:46 2020/06/03
【摘要】 不错的qt线程启动暂停停止的实现方法:具体实现参考:https://codereview.stackexchange.com/questions/26724/thread-pausing-resuming-canceling-with-qtQItemDelegate绘制图片m_image = new QImage(":/xxxx.png");...painter->drawImage(opt...
  • 不错的qt线程启动暂停停止的实现方法:

具体实现参考:

https://codereview.stackexchange.com/questions/26724/thread-pausing-resuming-canceling-with-qt

image.png

  • QItemDelegate绘制图片

m_image = new QImage(":/xxxx.png");

...
painter->drawImage(option.rect,*m_image);


  • QTableView锁定选区的一个实现思路


在子类中重写虚函数selectionChanged

void xxxTableView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
{
    if(isLocked){
       bool oldstate =  this->blockSignals(true);
       bool oldstate1 =  this->selectionModel()->blockSignals(true);
       this->selectionModel()->select(selected, QItemSelectionModel::Deselect);
       this->selectionModel()->select(deselected, QItemSelectionModel::Select);
       this->blockSignals(oldstate);
       this->selectionModel()->blockSignals(oldstate1);
    }else{
        //emit onViewSelectionChanged(this->selectedIndexes());//如果需要捕捉选区变化,注意这里没有使用selected
    }
    viewport()->update();
}

void xxxTableView::setSelectQuiet(QRect &rect)//忽略当前锁定设置的选择
{
    bool oldstate =  this->blockSignals(true);
    bool oldstate1 =  this->selectionModel()->blockSignals(true);
    QModelIndex topLeft = this->model()->index(rect.top(),rect.left());
    QModelIndex bottomRight = this->model()->index(rect.bottom(),rect.right());
    QItemSelection se(topLeft,bottomRight);
    this->selectionModel()->select(se,QItemSelectionModel::Select);
    this->blockSignals(oldstate);
    this->selectionModel()->blockSignals(oldstate1);
}
  • std::queue下标索引

https://stackoverflow.com/questions/5877504/access-c-queue-elements-like-an-array

image.png

/*--------------------------------------------其他------------------------------------------------------------*/

最近犯的几个错误:

队列元素采用变量缓存后,对缓存变量做自增自减操作,问题是每次再缓存时又重新覆盖;

类中包含指针成员时,尽量使用赋值而不是memcpy,触发有大批量的并且有性能要求,同样的包括拷贝构造;

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。