我在 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/