Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从QPushbutton继承的类不显示文本_C++_Qt - Fatal编程技术网

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

C++ 从QPushbutton继承的类不显示文本,c++,qt,C++,Qt,我正在尝试使用qt(一个简单的计算器)创建第一个项目。 我创建了一个从QPushButton继承的类,代码在没有警告的情况下编译,但是创建的按钮显示为空。 我不明白为什么它没有显示42 代码如下: main.cpp: #include "bouton_chiffre.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); bouton_chif

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

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

在构造函数中执行以下操作:

bouton_chiffre::bouton_chiffre(int valeur, QWidget *parent)
  : QPushButton(QString::number(valeur), parent)
{ 
  /*...*/
}
您应该更多地了解继承是如何工作的。在派生类中,您可以访问基类的所有受保护和公共成员,因此
setText(QString::number(valuer))也可以。但是,在一般情况下,您可以从派生类的初始化列表(冒号后)调用基类构造函数并传递所需的参数


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

所以,我继承并创建了一个QPushButton,当然这并不好用。。。我对boutonchiffre.cpp进行了如下修改,它现在的工作方式与我预期的一样:

#include "bouton_chiffre.h"

bouton_chiffre::bouton_chiffre(int valeur_init, QWidget *parent) : QPushButton(parent)
{
    valeur_du_bouton = valeur_init;
    setText(QString::number(valeur_init));
}
不过,直接使用QPushButton构造函数而不是setText可能更优雅,我可能会这样做


谢谢大家的回答

为什么bouton_chiffre也包含一个按钮le_bouton?可能是因为我是一个noob,应该更好地阅读他的代码:D它现在运行良好,thanks@ftynse答案看起来不错,但我们在某个时候都是笨蛋:)
bouton_chiffre::bouton_chiffre(int valeur, QWidget *parent)
  : QPushButton(QString::number(valeur), parent)
{ 
  /*...*/
}
#include "bouton_chiffre.h"

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