我在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,它会输出一个复选框。
非常感谢任何帮助
答案 0 :(得分:3)
你这样做......
QCheckBox *cBox = new QCheckBox;
cBox->setChecked(true);
...创建第二个动态分配的QCheckBox
- 与嵌入在checkbox
中的基础对象不同 - 然后泄漏该对象/内存。您只需通过调用继承的成员函数来检查嵌入式基类QCheckBox
:
checkbox(QWidget* parent = nullptr)
: QCheckBox(parent)
{
setChecked(true);
}