将属性添加到QT C 中的Qpushbutton

Adding a property to QPushButton in Qt C++

本文关键字:中的 Qpushbutton QT 属性 添加      更新时间:2023-10-16

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

至少有两种方法可以在按钮上执行操作。查看此问题:

第一种方法是将按钮子分组并在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);

错误:在此范围中未声明'CheckoutButton'

由于您的课程没有名为CheckoutButton的成员,因此您的类有一个称为ui的成员,该对象的成员称为CheckoutButton

请参阅有关如何访问它的构造函数。