Qt 为什么在QPlainTextEdit中移动光标滚动时不调用scrollContentsBy(dx,dy)函数

Qt 为什么在QPlainTextEdit中移动光标滚动时不调用scrollContentsBy(dx,dy)函数,qt,qt4,qplaintextedit,Qt,Qt4,Qplaintextedit,我已经派生了QPlaintTextEdit并重写了scrollContentsBy函数。只有当我们使用鼠标滚轮或滚动条时,才会调用它。当我们使用箭头键移动光标并以此滚动内容时,不会调用此函数 我对QTextEdit做了同样的事情,它工作得很好(意味着,它在所有情况下都会被调用) 这种行为的原因是什么?我可以使用什么替代方案 注:这是功能原型 void QPlainTextEdit::scrollContentsBy ( int dx, int dy ) [virtual protected]

我已经派生了QPlaintTextEdit并重写了scrollContentsBy函数。只有当我们使用鼠标滚轮或滚动条时,才会调用它。当我们使用箭头键移动光标并以此滚动内容时,不会调用此函数

我对QTextEdit做了同样的事情,它工作得很好(意味着,它在所有情况下都会被调用)

这种行为的原因是什么?我可以使用什么替代方案

注:这是功能原型

void QPlainTextEdit::scrollContentsBy ( int dx, int dy ) [virtual protected]
环境:

  • 视窗7
  • Qt 4.8
  • VS 2008
更新: 以下替代方案均无效

  • 价值改变
  • 幻灯片移动

不知道为什么,但也许您可以通过直接连接到QScrollBar::valueChanged()来解决您的问题?我认为,它在任何情况下都会发出。
scrollContentsBy
是为渲染优化而设计的,如果在某些情况下不触发它,也不会有太大的危害。只需使用
QScrollBar::valueChanged
即可。@PavelStrakhov,valueChanged也不会发出:(执行此操作时滚动条是否在视觉上移动?@PavelStrakhov,是的,这很奇怪。