我必须在 Qt 标签上使用悬停事件,但我找不到相关信息。
我尝试使用类似 ui->label->setText("<a>ads</a>")
的东西和 onLinkHovered
但它不能正常工作。
我必须在悬停时更改文本。
最佳答案
最灵活的解决方案是创建您自己的继承自 QLabel 的小部件。这样,您可以覆盖 enterEvent 和 leaveEvent @Jeremy 和 @Moe 正在写关于哪些是 protected 。作为这些方法实现的一部分,您可以相应地更改文本或装饰。例如:
class CustomLabel : public QLabel
{
Q_OBJECT
public:
CustomLabel(QWidget* parent = nullptr) : QLabel(parent){ }
protected:
void enterEvent(QEvent *ev) override
{
setStyleSheet("QLabel { background-color : blue; }");
}
void leaveEvent(QEvent *ev) override
{
setStyleSheet("QLabel { background-color : green; }");
}
};
另一种不太灵活的方法是为您在标签文本中指定的链接标记设置 href 属性。这样文本将被视为实际链接,您可以使用 linkHovered 信号进行连接。例如:
ui->label->setText("<a href='www.google.com'>link</a>");
connect(ui->label, &QLabel::linkHovered, this, [this](const QString&)
{
// do smth with the widget/text
});
但是请注意,这种方式只能对悬停事件进行修改。 因此,如果您需要将标签恢复到其原始状态,第一个选项就是可行的方法。
关于c++ - 如何创建qt标签悬停效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40729040/