c++ - 如何在没有 QLabel 的情况下在 Qt 中添加超链接?

标签 c++ qt hyperlink

我在 QWidget 中嵌套了一些标签和布局来构建侧边栏的一部分。每个 QWidget 都是它自己的部分,一个组件目前看起来像这样:

screenshot of gui

据我了解,您只能使用 QLabel 设置超链接,但我试图让白线之间的整个区域都可以点击。这包括图标和空格。有什么办法可以做到这一点?

这被标记为与我的要求相反的重复项,所以我想重申,我正在尝试实现一个没有 QLabel 的超链接。

最佳答案

您可以轻松地让小部件在点击时打开链接:

class Link : public QWidget {
  Q_OBJECT
  public:
  Link(QUrl url, QWidget p = nullptr) : QWidget(p), _url(url) {}
  QUrl _url;
  void mouseReleaseEvent(QMouseEvent *) { QDesktopServices::openUrl(_url); }
}

您可以避免任何额外的信号和连接,并让每个链接小部件在内部存储自己的链接,url 可以在构建时设置并随时更改。不使用信号和槽也可以更轻松地更改链接,而无需断开以前的连接。

只有当您想要不同的任意行为时,IMO 才会采用信号和槽解决方案。在这种情况下,您总是想要相同的 - 打开一个特定的链接,因此您不妨对其进行硬编码,并寻求一种更简单、计算效率更高的解决方案。

关于c++ - 如何在没有 QLabel 的情况下在 Qt 中添加超链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45807123/

相关文章:

c++ - 使用 std::unordered_map 的散列函数有什么限制

c++ - Visual Studio 是否具有命名空间敏感的宏替换选项?

jquery - 带 HTML5 或不带 HTML5 的 Qt

c++ - 某些代码未从代码覆盖率中删除

html - 当我使用绝对位置时,我的链接变为 "un-clickable"...我该如何修复?

html - CSS :link keep original color

c++ - 如何动画QBrush的颜色

c++ - 检查 QByteArray 的特定位

javascript - ionic /javascript : text with < a > tag can't be clicked in the HTML

c++ - C中的 float 问题