Qt小部件和指针

Sim*_*ity 1 c++ qt pointers

使用Qt小部件(即; QLabel)时,为什么要使用指针?

例如,我们为什么写:

QLabel *label = new QLabel("Hello");

并且,不是:

QLabel label = new QLabel("Hello");

谢谢.

lit*_*adv 7

new返回一个指针.如果通过动态内存分配创建对象 - 显然必须使用指针.

QLabel label = new QLabel("Hello"); 是不正确的代码,不会编译.

为什么要为小部件使用动态分配?因为它们必须在函数调用之间存活,就像任何事件驱动的GUI系统一样.堆栈(本地对象)上的分配将在作用域的末尾解除分配,这对小部件不起作用.


And*_*rew 5

因为如果要在堆栈上创建它们,它们将在作用域结束后删除。

如果您将编写如下内容:

void foo()
{
QWidget windget;
}
Run Code Online (Sandbox Code Playgroud)

foo()终止后,小部件将被删除。如果使用new,它将一直存在,直到将其手动删除(通常由父窗口小部件删除)为止。

我认为QLabel label = new QLabel("Hello");甚至不会编译。你可能会 QLabel label("Hello");