QT qtextbrowser 如何在读取文件的时候不自动换行,完全按照文件的格式输出?

QT qtextbrowser 如何在读取文件的时候不自动换行,完全按照文件的格式输出?,第1张

self.textBrowser.setLineWrapMode(QtWidgets.QTextEdit.NoWrap)

我用的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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12221779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存