永发信息网

如何在QTreeWidget中某一格添加进度条

答案:1  悬赏:10  手机版
解决时间 2021-03-03 14:14
如何在QTreeWidget中某一格添加进度条
最佳答案
在自定义的delegate中检查if(index.data(Qt::UserRole).toString() == "your value")的值,该值在QTreeWidget中要预先设定。这样就可以在让指定QTreeWidgetItem->setData(1, (Qt::UserRole), "your value")的QTreeWidgetItem使用相对应的delegate了.
就在构造函数里面加上以下两行代码即可:

//根据内容自动设置列宽
ui->treeWidget->header()->setResizeMode(QHeaderView::ResizeToContents);
ui->treeWidget->header()->setStretchLastSection(false);

在解决完上述问题后,又遇到一个问题,就是用鼠标左键或者右键单击QTreeWidget里面的选项时,水平滚动条会自动跑到最左边,双击不会出现这个问题,详细查阅了QTreeWidget的实现代码,在其父类中有个事件处理函数void QAbstractItemView::timerEvent(QTimerEvent *event),加了一个滚动处理,这里真是有点晕了,它的注释就是“we only get here if there was no double click”,大家可以看下这里为什么要加这个滚动处理。
解决方法如下(我已经对QTreeWidget进行了二次封装,就直接在这上面改的,不封装照样可以实现,原理是一样的):
1.加两个变量,记录是否有选项被点击,一个记录点击时的水平滚动条位置
bool m_isItemClicked;
int m_horizontalScrollBarPos;
2.对两个事件进行处理

connect(ui->treeWidget->horizontalScrollBar(), SIGNAL(valueChanged(int)), this,SLOT(scrollbarchange(int)));
void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
m_isItemClicked = true;
m_horizontalScrollBarPos = ui->treeWidget->horizontalScrollBar()->sliderPosition();
}
void MainWindow::scrollbarchange(int value)
{
if (m_isItemClicked)
{
ui->treeWidget->horizontalScrollBar()->setValue(m_horizontalScrollBarPos);
m_isItemClicked = false;
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
炳灵湖旅游纪念品在什么地方啊,我要过去处理
事业单位招聘会计,请问要考哪些科目
景信网络科技怎么去啊,有知道地址的么
在一次大扫除中,有一些同学被分配擦玻璃,如
我和我朋友我俩工作期间有些误会,然而她还是
路还这么长,我不介意一人称王称帝
慢邮记概念书店这个地址在什么地方,我要处理
佳人归来 , 暮道夜栏 , 谁的思念萦绕心间是什
二类疫苗哪些有必要打
请大虾看看我写的贷款买房每月应还钱数的计算
离婚证丢了,去补需要什么证件呢
早稻田大学和东京大学的分数线各是多少
宁夏回族自治区审计厅旧这个地址在什么地方,
关于下列氮的氧化物叙述正确的是 A氮的氧化物
据报载,我国公民所缴纳的每l00元税款中,有l
推荐资讯
( )然神( )
什么是社险?
银行理财有多少类型
放假除了逛街,旅游还可以干嘛?
【珍惜拥有议论文】珍惜拥有是一种人生觉悟.
自制火车票图片谁会呀,谢谢
深圳有湖南的办事处吗?可以办理流动人口婚育
养老保险帐号密码多少
原先全家人迁到城市里了,现在城市的房子卖了
我该去还是不去???(在线等),我跟前夫离婚一年
10与7.5的和除以它们的差,商是多少?正确的
驿城区驻马店茶与花间(爱家迪士尼大小王店)这
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?