我正在使用Qt创建一个界面。我添加了一个按钮,当它出现鼠标时,我看到QLabel并询问信息。(按钮不会被点击)我该怎么做。
我写了以下代码。但是,不要查看ui->结帐按钮。我想查看CheckoutButton。
mainwindow.h
public:
explicit PRJSVN(QWidget *parent=0);
~PRJSVN();
bool eventFilter(QObject *obj, QEvent *e);
mainwindow.cpp
PRJSVN::PRJSVN(QWidget *parent):
QMainWindow(parent),
ui(new Uİ::PRJSVN)
{
ui->setupUi(this);
ui->CheckoutButton->installEventFilter(this);
}
bool PRJSVN::eventFilter(QObject *obj, QEvent *e)
{
if(obj==(QObject*)ui->CheckoutButton)
{
if(e->type()==QEvent::Enter)
{
ui->label->SetText("Checkout Button");
}
}
return QWidget::eventFilter(obj,e);
}
答案 0 :(得分:1)
至少有两种方法可以对按钮鼠标悬停执行操作。 See this question:
第一种方法是通过子类化按钮并在enter事件上添加/发出新的悬停信号。
第二种方法是在带有按钮的小部件中使用事件过滤器。在链接问题中使用事件过滤器方法时,应将事件过滤器功能更改为:
bool YourWidget::eventFilter(QObject *obj, QEvent *e)
{
if (obj == (QObject*)yourPushButton) {
if (e->type() == QEvent::Enter)
{
// some action on mouseover
}
}
return QWidget::eventFilter(obj, e);
}
并使用事件过滤器:
yourPushButton->installEventFilter(this);
答案 1 :(得分:0)
错误:' CheckoutButton'未在此范围内声明
由于您的班级没有名为CheckoutButton
的成员,因此您的班级有一个名为ui
的成员,该对象的成员名为CheckoutButton
。
请参阅构造函数,了解如何访问它。