0

如何onmouseover为 a 定义和单击事件QLineEdit?我想发出 2 个信号 asonmouseover()clicked()forQLineEdit

4

2 回答 2

3

您可以在 QLineEdit 上安装事件过滤器。

这是一个例子:

QLineEdit *line_edit = new QLineEdit(this);
ui->verticalLayout->addWidget(line_edit);
line_edit->installEventFilter(this);

在您的事件过滤器功能中,您可以执行以下操作:(这是您覆盖的功能)

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    if(event->type() == QEvent::MouseButtonPress)
    {
        qDebug() << "CLICK";
    }
    if(event->type() == QEvent::MouseMove)
    {
        qDebug() << "MOUSE OVER";
    }
    return false;
}
于 2013-05-17T09:31:04.237 回答
1

恐怕,您将不得不继承QLineEdit和覆盖void mouseMoveEvent ( QMouseEvent * event )and void mousePressEvent ( QMouseEvent * event )(或者void mouseReleaseEvent ( QMouseEvent * event )如果您愿意)。并且不要忘记setMouseTracking(true);在没有按住鼠标按钮时调用来跟踪鼠标移动。

于 2013-05-17T09:03:03.517 回答