gpt4 book ai didi

c++ - QT4 如何使用静态字段?

转载 作者:行者123 更新时间:2023-11-30 03:09:36 25 4
gpt4 key购买 nike

我正在尝试在 QT 中使用静态字段

class MyLabel:public QLabel{
Q_OBJECT
public:
static QPixmap pix1;
static QPixmap *pix2;
static int WasInited;
...
};

int MyLabel::WasInited = 0;

MyLabel::MyLabel(){
. . .
if (WasInited==0) pix1.load("pic.png"); // Error
if (WasInited==0) pix2->load("pic.png"); // Error
WasInited=1; // Here using static field is OK

}

但我总是得到“对 MyLabel::pix* 的 undefined reference ”错误

如何声明和使用标准 QT 类的静态字段?

附言我在使用 int 静态字段时没有问题,所以我认为我的问题是特定于 QT 的

最佳答案

静态字段就像类中的方法。首先你需要声明它们,然后你需要定义它们的初始值。

对于 QPixmaps,它有点不同。由于静态成员在主入口点之前初始化。 QPixmap 需要 QApplication 才能工作,因此您不能将其设为静态变量,但是您可以将其设为静态指针。您还需要“定义”一个静态成员。通过定义你声明它的初始值。在这两种情况下,它都必须为 NULL,因为您仍然无法创建 QPixmap。在类的构造函数内部,您可以检查指针是否为 NULL,如果是,则可以使用适当的值初始化它们。

关于c++ - QT4 如何使用静态字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3993344/

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