我想在 QT 中用鼠标悬停 QLabel 时发出信号。
这可能吗?
如果没有,我该怎么做?
谢谢。
最佳答案
您可以在不继承 QLabel 的情况下进行悬停处理。尝试下一个代码示例:
void LabelHoverHandler::attach(QLabel *label)
{
label->setAttribute(Qt::WA_Hover, true);
label->installEventFilter(this);
}
bool LabelHoverHandler::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::HoverEnter)
{
emit signalMouseHover(dynamic_cast<QLabel*>(obj) );
qDebug() << "HoverEnter";
}
return false;
}
LabelHoverHandler 头文件:
class LabelHoverHandler : public QObject
{
Q_OBJECT
public:
LabelHoverHandler(QObject *parent);
virtual ~LabelHoverHandler() {};
void attach(QLabel *label);
protected:
bool eventFilter(QObject *obj, QEvent *event);
signals:
void signalMouseHover(QLabel*);
};
只需创建 LabelHoverHandler
的实例,并调用方法 attach()
并将所需的标签作为参数。
关于c++ - QT - 将鼠标悬停在 QLabel 上时发出信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43782336/