[英]QT4 How to use static fields?
我正在嘗試在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 *'的引用”錯誤
如何聲明和使用標准QT類的靜態字段?
PS我使用int靜態字段沒有問題,所以我認為我的問題是QT特定的
靜態字段就像類中的方法。 首先,您需要聲明它們,然后定義它們的初始值。
與QPixmaps有點不同。 由於靜態成員在主入口點之前初始化。 QPixmap需要QApplication才能工作,因此您將無法使其靜態化為變量,但是可以將其靜態化為指針。 您還需要“定義”靜態成員。 通過定義,您聲明它的初始值。 在這兩種情況下,它都必須為NULL,因為您仍然無法創建QPixmap。 在類的構造函數中,您可以檢查指針是否為NULL,如果是,則可以使用適當的值對其進行初始化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.