Qt QLabel设置超链接hover时出现下划线
Posted 师从名剑山
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt QLabel设置超链接hover时出现下划线相关的知识,希望对你有一定的参考价值。
Qt设置QLabel超链接hover出现下划线
文章目录
前言
由于本人在工作中遇到了一个需求,那就是鼠标覆盖label上的超链接时,添加下划线,不覆盖时就去掉下划线。所以,就有了本篇文章,来记录一下解决该问题的方法。
QLabel设置超链接
首先,我们还是简单的介绍一下,QLabel怎么设置超链接。要知道QLabel是支持html的,所以我们就可以用HTML的标签来设置超链接和下划线。
// 设置换行
ui->label->setWordWrap(true);
ui->label->setOpenExternalLinks(true);
ui->label->setText(u8"这是一个测试的链接<style> a text-decoration: none </style><a href = www.baidu.com>百度</a>,用来测试Hover");
setOpenExternalLinks
设置触发了超链接时,自动打开链接。我们可以通过调用setTextInteractionFlags
来设置对应的触发方式- HTML标签里,
text-decoration: underline;
来设置文字的下划线,<a href = > www.baidu.com>百度这个代表标记了一个超链接。超链接的内容为href后面跟的内容
回到正题
但是,这种情况只能设置固定显示下划线或者不带下划线。但是我们在Qt的事件种类中可以找到这样一个事件:
QEvent::CursorChange
所以,我们就来了灵感。我们将QLabel的这个事件拦截起来,然后针对不同的鼠标指针样式,来设置下划线的显示与隐藏,话不多说,直接上代码。
bool MainWindow::eventFilter(QObject* watched, QEvent* event)
if (watched == ui->label && event->type() == QEvent::CursorChange)
auto&& cursor = ui->label->cursor();
if (cursor.shape() == Qt::PointingHandCursor)
ui->label->setText(u8"这是一个测试的链接<style> a text-decoration: underline; </style><a href = www.baidu.com>百度</a>,用来测试Hover");
else
QTimer::singleShot(10, [this] ()
ui->label->setText(u8"这是一个测试的链接<style> a text-decoration: none; </style><a href = www.baidu.com>百度</a>,用来测试Hover");
);
return QWidget::eventFilter(watched, event);
效果图如下:
Note:
这里在改变下划线类型的时候,不能直接setText
这样会进入一个无限循环,具体原因暂时未知,就只能暂时用定时器来触发了。
Excel超链接功能,尝试使用网站超链接时出现“无法打开指定文件”
【中文标题】Excel超链接功能,尝试使用网站超链接时出现“无法打开指定文件”【英文标题】:Excel Hyperlink Function, getting "Cannot open the specified file" when trying to use website hyperlinks 【发布时间】:2022-01-07 13:41:20 【问题描述】:好的,所以我希望我能够在 excel 中使用 Hyperlink() 函数来获取工作票的链接,并为超链接提供更“简化”的名称,目前我将单元格 B6 作为友好名称我想使用和单元格 C6 作为票证链接。我的公式如下所示:
=HYPERLINK(Misc!C6,Misc!B6)
我在 B6 中的数据是“Example Ticket”
我在 C6 中的数据是“www.google.com”
我将 D6 作为具有公式的单元格
Cell Formatting
它确实输出了我期望的内容,这是一个标记为“示例票证”的 google.com 的新链接,但是当我单击该链接时,它会显示一条警告说“无法打开指定的文件”我已经验证了我拥有的链接在 C6 中,当我单击它时会打开 google.com,但是当我单击它创建的新链接时,它只会显示该警告。
我为此尝试使用不同的链接,包括 google.com、https://www.google.com/、www.google.com,但这些都不起作用,我也尝试过以不同方式格式化公式,但要么他们只是创建相同的链接,我这个错误,否则它们完全不起作用
=HYPERLINK(Misc!C6,Misc!B6)
=HYPERLINK(#Misc!C6,#Misc!B6)
=HYPERLINK(C6,B6)
我不确定你是否可以使用这个函数来创建这样的链接,但我想我想问问有没有人遇到过这个问题或者知道:)
复制步骤:
-
在单元格 B6 中输入“示例票”
在单元格 C6 中输入“www.google.com”
在单元格 D6 中输入公式“=HYPERLINK(Misc!C6,Misc!B6)”
按 Enter 键
点击 D6 中的新链接
预期结果:
链接打开 google.com
实际结果:
错误信息显示无法打开指定的文件
Error Message
【问题讨论】:
【参考方案1】:我将C6值设置为后成功 http://www.google.com/ 所有其他都导致了您描述的错误。因此,请考虑将其用于您的 url http://www.google.com/ 尾部斜杠似乎有所不同。
【讨论】:
谢谢老兄,成功了!【参考方案2】:也许你应该使用这个网站
https://www.google.com
【讨论】:
以上是关于Qt QLabel设置超链接hover时出现下划线的主要内容,如果未能解决你的问题,请参考以下文章
在QT中怎么实现当单击QLabel时出现一个下拉菜单?并且选择一个项目后,前面打勾? 求高手帮忙!