先记住滚动条位置,刷新数据后,再重置滚动条位置。
伪代码如下:
QScrollBar *scrollBar = verticalScrollBar();
int barPos = scrollBar->value();
//refresh
scrollBar->setValue(barPos);
更好的解决办法:
而最好的使用方式为使用QTableView+mode方式,此时更新数据后,当前窗口画面不会自动显示行table中的首行。
使用QTableWidget刷新数据后,经常会自动展示为table首行。为了显示刷新数据前所在的位置,解决办法如下: 先记住滚动条位置,刷新数据后,再重置滚动条位置。伪代码如下:QScrollBar *scrollBar = verticalScrollBar();int barPos = scrollBar->value(); //refresh
jQuery实现 选择TreeView子节点,页面回送
刷新
后,
滚动条
自动回到TreeView顶部,而不是被选中节点处,对于
数据
量较大的系统而言是非常不方便操作的。
实现单击TreeView节点,页面回发
刷新
后,
滚动条
自动定位到被选择节点处,使被选择节点可见
问题的阐述:由于网站嵌入代码很多javascript的不兼容导致js代码无效。模板页与服务器控件等的冲突。经过多次实验决定采用jQuery
#python代码
table=MainWindow_ui.tableWidget_2
table.
set
Item(i,0,
Qt
Widgets.
QTableWidget
Item(str(jcb.Name)))
发现
数据
并不是想象中跟线程运行那样实时的,要点一下才能显示出
数据
来
并且还会出现一些问题
为了做出对比,我将作业名的表格填写改成table.
set
Item的方式,其他格子用信号量机制,可以很清楚的看到问题所在!!!!
核心是要通过
qt
的槽函数来发射信
在编辑完某个cell之后,更新界面,总默认跳转到界面最顶端,这个很烦人,有时候你加了很多行东西,每次跳转都顶端,还得拉下来,在进行下一次编辑。
跟了一下代码,发现是因为,我更新界面的时候,使用了clear()这个函数,
m_pTableWidget->clear(); //清除表中内容,包括标题头
我是每次更新,先clear(),然后又根据
数据
重刷的界面,而clear()会触发
Qt
ui.
set
upUi(this);
ui.tableWidget->
set
ShowGrid(true);
ui.tableWidget->
set
SelectionBehavior(QAbstractItemView::SelectRows);
ui.table
一 问题描述
一般情况,当
QT
reeView的item展开后,
数据
较多时会
展示
滚动条
,如果item上有右对齐的显示文本,在item展开/收起变化时,竖直
滚动条
会呈现显示/隐藏变化,右对齐文本会“左右
移动
”,视觉效果差。原因是
滚动条
出现后“挤占了”item的空间。
Windows下有该问题,Mac下没有问题。
二 问题
展示
Demo
环境Win10,
Qt
5.9.2
新建UI工程,在UI拖入一...
```python
# 保存当
前
滚动位置
scrollbar
_
value
= self.tableWidget.vertical
ScrollBar
().
value
()
# 更新
数据
# ...
# 恢复滚动位置
self.tableWidget.vertical
ScrollBar
().
set
Value
(
scrollbar
_
value
)
在更新
数据
之
前
,首先保存当
前
的滚动位置。然后更新
数据
。最后,将
滚动条
的值设置为之
前
保存的值,以恢复滚动位置。这样就可以保持
滚动条
的位置不变了。