c++ - setChecked() 在类里面不起作用

标签 c++ qt

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

复选框.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

主要.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,它会输出一个选中的框。

非常感谢任何帮助

最佳答案

你正在做这个......

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

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

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

关于c++ - setChecked() 在类里面不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31954510/

相关文章:

c++ - NPAPI mac 插件与浏览器共享命令

C++11:istream.get() 在 EOM 上停止

c++ - Qt:QSS 和 drawComplexControl()

qt - 如何根据调试/发布设置不同的 qmake 配置?

javascript - 如何动态更改 Flickable 的 contentHeight?

c++ - 如何在运行时永久更改窗口图标?

c++ - ERROR_PATH_NOT_FOUND vs ERROR_FILE_NOT_FOUND,有什么区别?

c++ - 搜索并找到最短队列并在某些条件后搜索

Qt 信号和插槽对象断开连接?

qt - 如何设置 QListWidgetItem 的最小高度?