我在 QWidget 中嵌套了一些标签和布局来构建侧边栏的一部分。每个 QWidget 都是它自己的部分,一个组件目前看起来像这样:
据我了解,您只能使用 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/