QT 如何知道用户点击 QTextBrowser 中的具体链接地址

在通过鼠标点击 QTextBrowser 中的链接地址时,如果是希望使用外部浏览器打开链接地址,只需要添加一行代码 ui->textBrowser->setOpenExternalLinks(true); 但如果是想知道用户点击的具体链接地址,则需要设置 ui->textBrowser->setOpenExternalLinks(false);,另外再关联anchorClicked信号,示例代码如下:

#include "widget.h"
#include "ui_widget.h"
#include <QDesktopServices>
#ifdef Q_OS_WIN
#include <windows.h>
#endif
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //此属性指定QTextBrowser是否应自动打开用户试图通过鼠标或键盘激活的链接,无论该属性的值如何,始终会发出anchorclick信号
    //ui->textBrowser->setOpenLinks(false);//default value: true
    //指定QTextBrowser是否应使用QDesktopServices::openUrl()自动打开指向外部源的链接,而不是发出anchorClickd信号
    ui->textBrowser->setOpenExternalLinks(false);//default value: fasle
    //
    //ui->textBrowser->setFocusPolicy(Qt::NoFocus);
    ui->textBrowser->setAlignment(Qt::AlignCenter);
    //ui->textBrowser->setFrameShape(QTextEdit::NoFrame);
    ui->textBrowser->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    ui->textBrowser->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    //ui->textBrowser->document()->setDefaultTextOption(QTextOption(Qt::AlignCenter));
    connect(ui->textBrowser, SIGNAL(anchorClicked(const QUrl&)),this, SLOT(anchorClickedSlot(const QUrl&)));
    ui->textBrowser->append("baidu.com");
    ui->textBrowser->append(QString::fromLocal8Bit("<a href = \"http://www.baidu.com/\">baidu website</a>"));
    ui->textBrowser->append("weixin.com");
    ui->textBrowser->append(QString::fromLocal8Bit("<a href = \"https://weixin.qq.com/\">weixin website</a>"));
}
Widget::~Widget()
{
    delete ui;
}
void Widget::anchorClickedSlot(const QUrl& url)
{
    //QDesktopServices::openUrl(url);
#ifdef Q_OS_WIN
    ShellExecuteA(NULL, "open", url.toString().toStdString().c_str(), "", "", SW_SHOW);
#endif
}

————————————————

版权声明:本文为CSDN博主「hellokandy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/hellokandy/article/details/128915290

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值