treewidget怎么取消滚动条

发布网友 发布时间:2022-03-08 06:59

我来回答

2个回答

懂视网 时间:2022-03-08 11:20

产品型号:ASUS S340MC

系统版本:Windows 10

删除slader,需要先将slader卸载,再前往注册表删除其残留,具体操作方法如下:

1、首先按win键+r键打开运行,输入regedit并按回车键。

2、打开注册表定位到HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionUninstall

3、找到{b3d4b171-ec10-49a2-d856-2f96d0f2b14a},右键删除即可。

总结

1、首先按win键+r键打开运行,输入regedit并按回车键。

2、打开注册表定位到HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionUninstall

3、找到{b3d4b171-ec10-49a2-d856-2f96d0f2b14a},右键删除即可。

热心网友 时间:2022-03-08 08:28

就在构造函数里面加上以下两行代码即可:

//根据内容自动设置列宽
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;
}
}
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com