Qtreewidget置頂和取消置頂功能

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;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章