我在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 with box,则会输出一个复选框。
任何帮助是极大的赞赏
最佳答案
你在做这个...
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/