2013-02-27 467 views
0

我嘗試檢查的QPixmap被初始化時,當我嘗試使用來檢查:Qt的C++的QPixmap檢查其初始化

QPixmap pix; 

    if(pix.data_ptr()) 
    or 
    if(pix != null) 

其中PIX是的QPixmap類型的構件。

所有給我:

Access violation reading location 0x0000000c. 

我怎樣才能檢查代碼是否PIX爲空?

+1

什麼數據類型是'item'? – SingerOfTheFall 2013-02-27 13:21:17

+0

一般來說,在它的構造函數中我設置了虛擬QPixmap對象 我的問題是如何檢查QPixmap是否初始化 – user63898 2013-02-27 13:23:14

+0

我認爲您需要提供一個更清晰的描述。 @cartman告訴你如何檢查一個QPixmap是否被初始化,但這似乎並不是你的問題。如果您提供的少量代碼導致崩潰,這是因爲項目未初始化。 – 2013-02-27 13:39:40

回答

2

當非指針的QPixmap可能未初始化的唯一情況是:

QPixmap getPixmap() 
{ 
// no return statement here 
} 

QPixmap pix = getPixmap(); 
// now pix is invalid but .isNull() will return false 

我有類似的問題與未初始化的QStrings。

2

使用isNull()功能,當執行這樣的代碼

if(!item->pix.isNull()) 
+0

不,它僅在QPixmap使用對象虛擬對象初始化時才起作用。但在這裏我想檢查QPixmap是否被初始化或者沒有用這個虛擬對象 – user63898 2013-02-27 13:27:17

+0

因爲你的「pix」不是一個指針,它總是會被虛擬對象初始化。 – ismail 2013-02-27 13:32:31

+0

沒有它沒有,我在這裏的情況下,不知怎的,我不知道如何 它只有沒有設置虛擬對象得到減速。 但它並不重要。我想檢查它的初始化 – user63898 2013-02-27 13:34:59