首页 > 其他分享 >Qtreewidget置顶和取消置顶功能

Qtreewidget置顶和取消置顶功能

时间:2023-02-27 21:47:53浏览次数:39  
标签:Qtreewidget 取消 QTreeWidget pCase toString background path 置顶

1.1   Treewidget置顶和取消置顶

 

需求中有个置顶案件的需求,取消置顶之后,被取消的案件在最后一个置顶案件下面,新建的案件也要在置顶案件下面,Treewidget本身没有置顶的功能,但是Treewidget有个排序的功能,可以根据排序功能来做置顶和取消置顶功能;

(1)首选案件按照逆序排列

treeWidget->setSortingEnabled(true);

ui.treeWidget->sortItems(0, Qt::SortOrder::DescendingOrder);//案件按照添加时间逆序排列

(2)置顶和取消置顶设置时间text

创建案件时,设置创建时间,置顶时将案件时间加上100年,这样就会自动按照时间逆序排序而置顶,当取消置顶时,再将时间减去100年;就会根据自动排序功能,回到原来的位置;

connect(pCase->ui.pbTop, &QPushButton::clicked, this, [=]() {
            //更新时间
            if (pCase->m_top)//取消置顶
            {
                pCase->ui.pbTop->setToolTip("置顶");
                pCase->ui.pbTop->setChecked(false);
                pCase->m_top = false;
                QString strTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
                topItem->setText(0, strTime);
                QString strSql = QString("update CaseManage set createtime = '%1' ,top='0' where path='%2'").arg(strTime).arg(info.value("path").toString());
                QString strmsg = "";
                QVariantMap result;
                LocalDb::instance()->ExcuateSql(strSql, result, strmsg);
                if (m_picPathDirInfo.find(info.value("path").toString()) != m_picPathDirInfo.end())
                {
                    m_picPathDirInfo[info.value("path").toString()]["createtime"] = strTime;
                    m_picPathDirInfo[info.value("path").toString()]["top"] = "0";
                }    
            }
            else//置顶
            {
                pCase->ui.pbTop->setToolTip("取消置顶");
                pCase->ui.pbTop->setChecked(true);
                pCase->m_top = true;
                //增加100年作为置顶时间排序最上面
                QString strTime = QDateTime::currentDateTime().addYears(100).toString("yyyy-MM-dd hh:mm:ss");
                topItem->setText(0, strTime);
                QString strSql = QString("update CaseManage set createtime= '%1' , top='1' where path='%2'").arg(strTime).arg(info.value("path").toString());
                QString strmsg = "";
                QVariantMap result;
                LocalDb::instance()->ExcuateSql(strSql, result, strmsg);
                if (m_picPathDirInfo.find(info.value("path").toString()) != m_picPathDirInfo.end())
                {
                    m_picPathDirInfo[info.value("path").toString()]["createtime"] = strTime;
                    m_picPathDirInfo[info.value("path").toString()]["top"] = "1";
                }
            }
            SlotUpdateTreeListBackground();
        });

 

(3)设置时间显示为透明

QTreeWidget

{

background: #303033;

font-size:16px;

color: rgba(255,255,255,0);//字体颜色白色透明,不会显示

border:0px;

background-image:url(:/preview/Resources/previewanalyze/nodata.png);

background-repeat:no-repeat;

background-position:center;

}

 

QTreeWidget::item

{

background: #303033;

}

QTreeWidget::branch

{

background:#303033;

}

QTreeWidget::item:hover

{

background: rgba(255,255,255,0.12);

 

}

 

QTreeWidget::item:selected{

 

background: rgba(32,128,247,0.32);

color: rgba(32,128,247,0);

}

QTreeWidget::branch:closed:has-children:!has-siblings,

QTreeWidget::branch:closed:has-children:has-siblings {

background-image:url(:/analysisCenter/Resources/analysisCenter/arrowexpend-nor.svg);

background-repeat:no-repeat;

background-position:center;

}

 

QTreeWidget::branch:open:has-children:!has-siblings,

QTreeWidget::branch:open:has-children:has-siblings {

background-image:url(:/analysisCenter/Resources/analysisCenter/arrowclose-nor.svg);

background-repeat:no-repeat;

background-position:center;

}

标签:Qtreewidget,取消,QTreeWidget,pCase,toString,background,path,置顶
From: https://www.cnblogs.com/bclshuai/p/17162009.html

相关文章

  • Qtreewidget滚动条宽度根据内容自适应调整
    1.1  组织树treewidget滚动条宽度根据内容自适应调整  Treewidget只有在多列时,才会自适应显示横向滚动条,并且根据内容自动调整滚动条的大小,为了实现任务列表自适应......
  • QFileDialog实现同时选择文件和文件夹,确认取消按钮英文问题解决方法
    如下图所示,需求是同时能够选择文件或者文件夹,但是QFileDialog文件窗口类要么只能选文件,要么只能选文件夹,无法同时去选择文件和文件夹; 要实现这样的需求,封装了一个类,实现......
  • QtreeWidget实现模糊搜索功能
    在输入框输入检索关键字,然后根据输入的关键字去搜索任务列表,只显示包含检索关键字的项随着输入文字的变化,不断的刷新搜索内容;效果如下所示。  搜索函数实现方法如下所......
  • Windows驱动开发学习记录-IRP取消例程问题
    一般设置IRP取消例程很简单,大致代码如下{......IoSetCancelRoutine(pIrp,LogIRPCancelRoutine); pIrp->IoStatus.Status=STATUS_PENDING;returnSTATU......
  • uniapp radio 弹出取消后恢复以前的选择
    <view><radio-groupclass="radioBox"@change="radioChange"v-if="hackReset"><labelclass="itemRadiouni-list-celluni-list-cell-pd">......
  • powerToys win11 实现屏幕置顶功能
    windows11应用商店搜索PowerToys  选择powerToys   安装运行  设置自己喜欢的快捷键  关闭x当前窗口,程序会自动进入到的后台运行打开激......
  • [其他]置顶
    HN现役OIer,全机房最菜。 这个博客大概是考试总结集合和一些闲话。 密码要么是G2022级教练放考试题目/总结的地址(只有数字和'.'),要么是一个字符串。 后者一般是不方......
  • Mybatis-Plus取消自动转驼峰拦截器
    背景项目使用Mybatis-Plus,开启了全局结果集字段转驼峰map-underscore-to-camel-case:true。开启之后如果需要返回下划线需要自定义resultMap现需要返回List<Map>,且返回......
  • 取消EXCEL工作表保护的代码
    开始---excel选项----信任中心,启用所有宏点视图里面----宏,录制宏,起好名字,关闭。再点查看宏,编辑宏,把代码贴进去,关闭。再执行宏,等跳出来,你的密码是某某某,工作表保护就解除......
  • axios中取消请求及阻止重复请求的方法
    前言在实际项目中,我们可能需要对请求进行“防抖”处理。这里主要是为了阻止用户在某些情况下短时间内重复点击某个按钮,导致前端向后端重复发送多次请求。这里我列举两种比......