admin管理员组文章数量:1794759
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(QTextBrowser)点击链接打开浏览器文件夹文件 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686800758a104595.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论