使用 C++ 和 Qt 创建 GUI 时,您可以创建一个标签,例如:
QLabel* label = new QLabel("Hey you!", centralWidgetParent);
这会在堆上创建对象并将一直留在那里,直到我手动删除它或父对象被销毁。我现在的问题是为什么我需要一个指针?为什么不在堆栈上创建它?
//Create a member variable of Class MainWindow
QLabel label;
//Set parent to show it and give a text so the user can see it
QWidget* centralWidget = new QWidget(this); //Needed to add widgets to the window
this->setCentralWidget( centralWidget );
label.setParent(centralWidget);
label.setText( "Haha" );
这很好用,我可以看到标签并且它没有消失。
我们在 C++ 中使用指针来让某些东西活得更久,这样我们就可以在各种范围内使用一个对象。但是当我创建一个成员变量时,它不会一直停留到对象被销毁吗?
编辑:也许我没有足够澄清。这是 MainWindow 类:
class MainWindow : public QMainWindow
{
Q_OBJECT
QLabel label; //First introduced here...
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
};
//Constructor
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QWidget* centralWidget = new QWidget(this);
this->setCentralWidget( centralWidget );
label.setParent(centralWidget);
label.setText( "Haha" );
}