在Qt C ++中向QPushButton添加属性

时间:2016-12-16 06:29:38

标签: c++ qt qpushbutton

我正在使用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);
}

2 个答案:

答案 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

请参阅构造函数,了解如何访问它。