自从我学习 Qt 以来,我一直对以下事实感到困惑:在我读过的文档和书籍中,它们使用作为 QObject 子类实例的属性的指针,例如小部件。
我知道 QObjects 会删除他们的孩子,但我们不应该避免使用指针,除非真的有必要吗?
这是一个我不使用指针的工作示例:
小部件.h 文件:
#include <QSlider>
#include <QLabel>
#include <QVBoxLayout>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
public slots:
void change(int);
private:
QSlider m_slider;
QLabel m_label;
QVBoxLayout m_layout;
};
和 Widget.cpp 文件:
#include "Widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, m_slider(Qt::Horizontal)
, m_label("0")
, m_layout(this)
{
m_layout.addWidget(&m_slider);
m_layout.addWidget(&m_label);
connect(&m_slider, SIGNAL(valueChanged(int)), this, SLOT(change(int)));
}
void Widget::change(int n){
m_label.setText(QString::number(n));
}
这里唯一的区别是我必须在 Widget.h 文件中包含标题,这会是使用指针的原因吗?
我想补充一点,我在 StackOverflow 上看到了一些类似的问题,但答案是小部件应该存在于函数调用之间,但是当将它们用作属性时,这是在这里实现的。