qt - 当鼠标悬停在 QPushButton 上时,如何从 QPushButton 发出信号?

标签 qt mousehover

最近想要那个QPushButton当鼠标指针进入时可以发出信号。我怎样才能做到?

我知道 QPushButton 有一些已经定义好的信号,比如 clicked() , pressed() , destory()等等。但是没有像hover(), enter(), ...

我看了一些关于它的信息:有人说可以通过css来完成。我不明白。你能给我一些建议吗?谢谢!

最佳答案

您可以使用 QWidget::enterEvent ( QEvent * event )为了这。

您覆盖此事件并在发生此事件时发送自定义定义的信号。

首先,您必须为此小部件启用鼠标跟踪(例如,构造函数中的 setMouseTracking(true))。

头文件:

class my_button
{
    // ...

protected:
    virtual void enterEvent( QEvent* e );

public Q_SIGNALS:
    void hovered();

    // ...
};

源文件:
void my_button::enterEvent( QEvent* e )
{
    Q_EMIT hovered();

    // don't forget to forward the event
    QWidget::enterEvent( e );
}

使用按钮的位置:
connect( one_of_my_button, SIGNAL(hovered()), this, SLOT(do_something_when_button_hovered()) );

关于qt - 当鼠标悬停在 QPushButton 上时,如何从 QPushButton 发出信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9261175/

相关文章:

c++ - 用Qt显示大量图像

c++ - Qt 生成 Key Press(keyboard) to the system(OF) 一种跨平台的方式

qt - 让 Qt Creator 使用 MinGW

c++ - 快速解析和打印 Google Protobuf 的方法

html - :hover state not working

css - Image Greyscale with CSS & re-color on mouse-over social icons?

html - 将鼠标悬停在文本链接上会更改图像的 z-index

c++ - QTreeView/QHeaderView 仅调整第一列的大小以拉伸(stretch)和交互

javascript - 鼠标悬停时的文本框

Jquery 如果悬停元素添加按钮 如果不删除按钮