gpt4 book ai didi

c++ - 继承自QLabel的类,为什么不调用自定义槽?

转载 作者:行者123 更新时间:2023-11-30 02:24:22 24 4
gpt4 key购买 nike

我让类继承自QLabel。这个类也有 public slot,那应该改变标签标题。我用 clicked() SIGNAL 按钮“调用”这个 SLOT。所以当我按下按钮时没有任何反应。

#include <QApplication>
#include <QLabel>
#include <QPushButton>

class Label : public QLabel
{
public:
Label(QString a) : QLabel(a){}

public slots:
void change()
{
this->setNum(2);
}
};

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QPushButton* button = new QPushButton("Button");
Label* lbl = new Label("Label");

button->show();
lbl->show();

QObject::connect(button, SIGNAL(clicked(bool)), lbl, SLOT(change()));

return a.exec();
}

我应该如何更改插槽中的标题?

最佳答案

为了识别信号和插槽,类必须使用 Q_OBJECT私有(private)部分的宏。

要做的另一件事是包含 “main.moc”,有关这一点的更多信息,请阅读 this .

#include <QApplication>
#include <QLabel>
#include <QPushButton>

class Label : public QLabel
{
Q_OBJECT
public:
Label(const QString &text, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()) :
QLabel(text, parent, f){}

public slots:
void change()
{
setNum(2);
}
};

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QPushButton* button = new QPushButton("Button");
Label* lbl = new Label("Label");

button->show();
lbl->show();

QObject::connect(button, SIGNAL(clicked()), lbl, SLOT(change()));

return a.exec();
}

#include "main.moc"

在进行这些更改结束时,您必须执行以下操作:

  1. 在“构建”菜单中按全部清除。
  2. 然后在同一菜单中运行 qmake。
  3. 然后您只需编写您的项目。

关于c++ - 继承自QLabel的类,为什么不调用自定义槽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45479509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com