我正在尝试在QTextEdit控件中实现自定义滚动行为。它似乎正在工作,但是我在按PageDown / PageUp键时遇到问题:由于文档指出,我正在通过actionTriggered信号控制滚动行为:
并从我需要从那里到达的sliderPosition
开始一个QTimer(例如,每次value()
到达sliderPosition
时,我都会递增)。不幸的是,每当我按下PageUp / PageDown键时,插入符号也会触发另一个setValue()函数调用,它由PageUp / PageDown键移动,它会自动将滚动条值移动到动画的结尾。
调用堆栈显示:
QAbstractSlider::setValue(int)
??
QMetaObject::activate(QObject*, int, int, void**)
QWidgetTextControl::visibilityRequest(QRectF const&)
QWidgetTextControl::ensureCursorVisible() <--
QWidgetTextControl::setTextCursor(QTextCursor const&) <--
QTextEdit::keyPressEvent(QKeyEvent*)
QWidget::event(QEvent*)
QFrame::event(QEvent*)
QAbstractScrollArea::event(QEvent*)
QTextEdit::event(QEvent*)
QApplicationPrivate::notify_helper(QObject*, QEvent*)
QApplication::notify(QObject*, QEvent*)
QCoreApplication::notifyInternal(QObject*, QEvent*)
...
我不知道如何防止由于插入PageUp / PageDown键而导致插入符号移动时插入符号发出
QAbstractSlider::SetValue()
调用。任何帮助将不胜感激。
最佳答案
好,那就用
disconnect(receiver, SLOT(setValue...), unwanted_sender, SIGNAL(...))
断开特定的不需要的连接。