gpt4 book ai didi

c++ - Qt:创建 QStackedLayout

转载 作者:太空宇宙 更新时间:2023-11-04 11:50:39 24 4
gpt4 key购买 nike

请看下面的代码:

QStackedLayout stackLayout(this);
QStackedLayout stackLayout = QStackedLayout(this);

我有两个问题:
为什么第二个说法不可以?
当我在头文件中声明变量而不是指针时,如何调用 QStackedLayout 的构造函数?

最佳答案

首先,我认为您误解了构造函数。 Qt 为其元素采用父元素,因为它将在堆上创建时管理它们的存储持续时间:

// here you need this constructor, so Qt will free the resource for you
QStackedLayout * layout = new QStackedLayout(this);
// here you don't need it, the object has automatic storage duration
QStackedLayout layout;

然后,如果要为头文件中声明的对象调用某个构造函数,请使用初始化列表:

struct foo
{
foo()
: s("demo")
{}
std::string s;
};

该对象派生自 QObject,因此不可复制 - 这就是您的第二条语句不起作用的原因。

关于c++ - Qt:创建 QStackedLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18427674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com