c++ - 从 QPushbutton 继承的类不显示文本

标签 c++ qt

我正在尝试使用 qt(一个简单的计算器)创建第一个项目。 我创建了一个继承自 QPushButton 的类,代码在没有警告的情况下编译,但创建的按钮显示为空。 我不明白为什么它不显示 42...

代码如下:

main.cpp :

#include "bouton_chiffre.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    bouton_chiffre w(42, 0);
    w.show();

    return a.exec();
}

bouton_chiffre.h :

#ifndef BOUTON_CHIFFRE_H
#define BOUTON_CHIFFRE_H

#include <QObject>
#include <QWidget>
#include <QPushButton>

class bouton_chiffre : public QPushButton
{
    Q_OBJECT

public:
    bouton_chiffre(int, QWidget*);

private:
    int valeur_du_bouton;
    QPushButton *le_bouton;
};

#endif // BOUTON_CHIFFRE_H

bouton_chiffre.cpp :

#include "bouton_chiffre.h"

bouton_chiffre::bouton_chiffre(int valeur_init, QWidget *parent)
{
    valeur_du_bouton = valeur_init;
    le_bouton = new QPushButton(QString::number(valeur_init), parent);
}

最佳答案

您不是在为父按钮类设置文本,而是在 le_bouton 中创建此类的新实例。

在构造函数中做这样的事情:

bouton_chiffre::bouton_chiffre(int valeur, QWidget *parent)
  : QPushButton(QString::number(valeur), parent)
{ 
  /*...*/
}

您应该阅读更多有关继承如何工作的内容。在派生类中,您可以访问基类的所有 protected 和公共(public)成员,因此 setText(QString::number(valuer)); 也可以。然而,在一般情况下,您可以从派生类的初始化列表(在冒号之后)调用基类构造函数并传递所需的参数。

创建具有基类类型的派生类的成员与继承无关。这只是一个不同的对象。

关于c++ - 从 QPushbutton 继承的类不显示文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30070631/

相关文章:

c++ - 统一迭代 std::vector<T> 和 std::vector<unique_ptr<T>>

c++ - 在 C++ 中重载 new、delete

c++ - 链接列表最后添加不起作用

qt - 如何在 qt creator 中删除项目?

qt - 当应用程序被要求退出时允许用户交互

c++ - atof 只返回整数?

python - Qt 获取从子菜单中单击的操作

C++ 将字符串转换为 typedef 或 istream 重载

c++ - 在C++书籍中,array bound必须是常量表达式,但为什么下面的代码有效?

javascript - QML:将 JS 对象传递给 C++ 成员函数