2011-09-30 95 views
1

我正在Qt中製作一個自定義小部件,並將圖像作爲其背景。背景圖像對於小部件的所有實例都是完全相同的。我想知道我是否以適當的方式做到這一點。Qt:正確存儲自定義小部件的圖像資源

下面是我現在做:

// QMyWidget.h 
class QMyWidget : public QWidget 
{ 
/* some stuff.. and then: */ 
protected: 
    static QImage *imgBackground; 
} 

// QMyWidget.cpp 
QImage *QMyWidget::imgDial = NULL; 

QMyWidget::QMyWidget(QWidget *parent) : QWidget(parent) 
{ 
    if(imgBackground== NULL) 
    { 
     imgBackground= new QImage(); 
     imgBackground->load(":/Images/background.png"); 
    } 
} 

void QMyWidget::paintEvent(QPaintEvent *e) 
{ 
    QPainter painter(this); 
    painter.drawImage(QPoint(), *imgBackground); 
} 

代碼工作得很好,但是這被認爲是做一個好辦法嗎?

回答

2

這是做到這一點的一種方式,如果您只處理單個圖像,但是如果您決定縮放並使用一些自定義資源,那麼Qt Resource System是更好的方式做到這一點。它將節省您在代碼中的時間(不需要重複執行QImage),並且還具有其他一些很好的功能,如資源壓縮。

+0

那麼,我使用資源系統來嵌入它們。但我不應該加載和存儲它們嗎?或者在每次繪畫事件中只做QImage(「:/ resource/path.png」)就可以了嗎? – tacospice

+0

你可以在繪畫事件中設置它,或者你可以使用樣式表來實現它。 –