我用的pyqt5,塌孙找了半天才找到,qt的话估计判陪也差不多。掘衫蠢具体怎么找,用一个好的ide然后会自动探测textbrowser类下的方法,挨个看,都是字面意思,基本1分钟就能找到。
QTextBrowser会纤轮闹试图自己打开链接,大部分时候这不是你想要的效果,所以要setOpenLinks(false)。之后捕获anchorClicked信号,然后调用ShellExecute函数用系统默认浏览器打开url。参考代码如下===============================================
#include "testtextbrowser.h"
#include <QString>桐凳
#include <windows.h>
TestTextBrowser::TestTextBrowser(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this)
ui.textBrowser->setOpenLinks(false)
connect(ui.textBrowser, SIGNAL(anchorClicked(const QUrl&)),this, SLOT(anchorClickedSlot(const QUrl&)))
ui.textBrowser->append(QString::fromLocal8Bit("<a href = \毁罩"http://www.sina.com.cn/\">新浪</a>"))
}
void TestTextBrowser::anchorClickedSlot(const QUrl&url)
{
ShellExecuteA(NULL, "open", url.toString().toStdString().c_str(), "", "", SW_SHOW)
}
其实实现起来也不是很复杂,主要是自append一段文字之后,记录下来这一次append的block的行数,既然你知道了位置,选择或删除的话就容易了,贴一段代码供参考:static int lastBlockCount = 0//渗答型最后一次文本总行数
int iCount = ui.chat_edit->document()->blockCount()//当前插入之后的总行数
m_msgLines.push(iCount-lastBlockCount)//m_msgLines是一个队列,举罩保存丛猜当前插入字符行数
lastBlockCount = iCount
//超过阀值,删除10条
if (m_msgLines.size()>100)
{
int iLines = 0
for (int i=0i<10i++)
{
iLines += m_msgLines.front()
m_msgLines.pop()
}
QTextCursor cs=ui.chat_edit->textCursor()
cs.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor)
cs.movePosition(QTextCursor::NextBlock,QTextCursor::KeepAnchor, iLines)
cs.removeSelectedText()
lastBlockCount -= iLines
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)