我正在使用QT Creator创建一个简单的应用程序,每个应用程序旁边都有两个textEdit字段。我希望在滚动时将两个字段都链接起来,这样当一个字段向上或向下滚动时,另一个字段也会自动滚动,反之亦然。为此,我需要一个回调函数,只要用户移动其中一个字段的slideBar就会触发该回调函数。不幸的是,当我右键单击textEdit字段并按“转到插槽”时,找不到滑动条移动的事件。
我该如何实现?
QTextEdit
没有信号表明它的滑动条何时更改,因为它不是滚动条。但是,QScrollBar
具有sliderMoved(int value)
信号,该信号在滑块移动时发出。 QScrollBar
还可以通过插槽设置滚动值(使用setValue(int value)
)
因此,我们可以非常容易地使用信号和插槽将两个滚动条绑在一起。
例如:
...
// Get easy pointers to the scrollbars
QScrollBar* textbx_slider_1 = ui->textbx1->verticalScrollBar();
QScrollBar* textbx_slider_2 = ui->textbx2->verticalScrollBar();
// Connect them too each other
connect(textbx_slider_1, &QScrollBar::sliderMoved, textbx_slider_2, &QScrollBar::setValue); // Connect the first scrollbar to the second
connect(textbx_slider_2, &QScrollBar::sliderMoved, textbx_slider_1, &QScrollBar::setValue); // Connect the second scrollbar to the first
...
((假设您的QTextEdit
小部件的ID为textbx1
和textbx2
)