admin管理员组

文章数量:1794759

Qt(QTextBrowser)点击链接打开浏览器/文件夹/文件

Qt(QTextBrowser)点击链接打开浏览器/文件夹/文件

在一些软件中,可能需要一个信输出框,用来输出软件运行过程中产生的各种信,如下图vs中的输出。有时可能会遇到输出一个文件路径,或者是一个浏览器路径,如果在输入框中点击这个字符串便能直接打开,会方便很多。在Qt的QTextBrowser中,就支持这样的操作。

 

打开文件/文件夹

auto text_browser = new QTextBrowser(this); text_browser->setFocusPolicy(Qt::NoFocus); text_browser->setOpenLinks(false); text_browser->setOpenExternalLinks(false); // 点击打开文件夹/文件 text_browser->append("<a href=\\"file:///C:/Users/wangjun/Documents\\">Open Documents Path</a>"); text_browser->append("<a href=\\"file:///C:/Users/wangjun/Desktop\\">Open Desktop Path</a>"); text_browser->append(""); text_browser->append("<a href=\\"file:///C:/Users/wangjun/Downloads/test.txt\\">Open Text File</a>"); auto main_layout = new QVBoxLayout(); main_layout->addWidget(text_browser); this->centralWidget()->setLayout(main_layout); connect(text_browser, &QTextBrowser::anchorClicked, this, [=](const QUrl &link) { auto path = link.path(); path.remove(0, 1); QFileInfo info(path); if(info.isDir()) QDesktopServices::openUrl(link); else if(info.isFile()) QDesktopServices::openUrl(QUrl::fromLocalFile(path)); });

 

打开浏览器链接

auto text_browser = new QTextBrowser(this); text_browser->setFocusPolicy(Qt::NoFocus); text_browser->setOpenLinks(true); text_browser->setOpenExternalLinks(true); // 点击打开浏览器 QString browser_url = "y.qq/"; QString content_word = QStringLiteral("This is a browser url test: "); QString word = QStringLiteral("Click to jump to the browser"); QString texts = QStringLiteral("%1<a style='color:#5998FF;text-decoration:none;'href=\\"%2\\">%3</a>").arg(content_word).arg(browser_url).arg(word); text_browser->append(texts); auto main_layout = new QVBoxLayout(); main_layout->addWidget(text_browser); this->centralWidget()->setLayout(main_layout);

 

注意

如果不设置下面这两行代码,那么打开文件/文件夹时,QTextBrowser中的内容会被重定向,即打开文本文件时,内容变为文本的内容,打开文件夹时,内容变为空。

text_browser->setOpenLinks(false); text_browser->setOpenExternalLinks(false);

如果需要打开浏览器链接,那么这两个需要设置为true

本文标签: 文件夹打开浏览器链接文件QT