Qt - QtextBrowser 实现自动下拉滚动

前言

最近一直在折腾我的 UHelper,诚如名字所见,它是一个串口调试助手。

之所以开启这个项目是因为:

  • 目前在 学习QT,直接看 Class文档太无聊,不如找个东西做一下。
  • 很多公司对盗版软件查得比较严,要想找到一个长得好看使用舒心还免费的调试助手是比较难的…为了避免不必要的麻烦,不如自己做一个吧,反正 QT 实现是非常简单的。

所有源码均托管在 GayHub(可戳) 。目前仍在进一步完善中。

在消息接收窗口中,每次收到数据都会将数据添加到 QtextBrowser 中。

若数据较多,则会出现滚动条。默认情况下,滚动条是不会自动下拉至底部的。也就是说我们新接收到的消息得自己拉动滚动条才能看到。这样的操作非常不友好,得想办法解决它。

实现

实现的思路很简单,当有新数据输入时,QtextBrowser 会有两个信号:

一个是 它自身sourceChanged( )
Qt - QtextBrowser 实现自动下拉滚动_第1张图片
另一个是来自它爸爸 QTextEdittextChanged( )
Qt - QtextBrowser 实现自动下拉滚动_第2张图片

我们只需要将其中任意一个信号绑定槽函数,在槽函数中实现以下代码即可:

ui->textBrowser_intput->moveCursor(QTextCursor::End);

存在的问题

  • 目前我使用的绑定 sourceChanged( ) 的方法,但该方法引入了一个问题,即我无法通过鼠标选择QtextBrowser中的文本,仅可通过右键全选。

  • 而使用 textChanged( ) 也存在问题:
    当我在数据定时发送接收时选中部分文字,选中部分文字会被新接收的内容替换掉。这是我不希望看到的。

目前仍无较好的解决方法,逮着大佬咨询后,大佬说得用自定义控件…留坑。

你可能感兴趣的:(C/C++,Qt)