setChecked()无法在课程

时间:2015-08-12 01:15:23

标签: c++ qt

我在Qt 5中制作了一个小型测试程序,并尝试实现一个复选框类,默认情况下选中该框。但是,每当我运行程序时,似乎都没有选中复选框。以下是代码:

checkbox.h:

    #ifndef CHECKBOX
    #define CHECKBOX

    #include <QCheckBox>
    #include <QWidget>



   class checkbox : public QCheckBox
   {
   public:

        checkbox(QWidget *parent = 0) : QCheckBox(parent)
        {
            QCheckBox *cBox = new QCheckBox;
           cBox->setChecked(true);
        }
    };

    #endif // CHECKBOX

main.cpp中:

    #include "mainwindow.h"
    #include <QApplication>
    #include <QAction>
    #include <QtWidgets>
    #include <checkbox.h>

    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QWidget *window = new QWidget;

        window->setWindowTitle("test");
        checkbox *box = new checkbox;

        QHBoxLayout *mainLayout = new QHBoxLayout;
        mainLayout->addWidget(box);

       window->setLayout(mainLayout);
       window->show();

       return a.exec();
    }

有趣的是,如果我在main中调用带有框的setChecked,它会输出一个复选框。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:3)

你这样做......

QCheckBox *cBox = new QCheckBox;
cBox->setChecked(true);

...创建第二个动态分配的QCheckBox - 与嵌入在checkbox中的基础对象不同 - 然后泄漏该对象/内存。您只需通过调用继承的成员函数来检查嵌入式基类QCheckBox

checkbox(QWidget* parent = nullptr)
  : QCheckBox(parent)
{
    setChecked(true);
}