簡體   English   中英

QT4如何使用靜態字段?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM