2013-01-23 69 views
0

我正在做一個菜單小部件,我需要用不同的圖像設置每個小部件。小部件存儲在一個數組中。有誰知道我可以用什麼來設置一個不同的圖像到數組的每個實例?設置不同的圖像到陣列

如果需要更多信息,請讓我知道!

這裏是一個widget

#include "iconwidget.h" 
#include <QPaintEvent> 
#include <QPainter> 
#include <QPainterPath> 

iconWidget::iconWidget(QWidget *parent) : 
    QWidget(parent) 
{ 
    this->resize(ICON_WIDGET_WIDTH,ICON_WIDGET_HEIGHT); 
    pressed = false; 
} 

void iconWidget::paintEvent(QPaintEvent *event) 
{ 
    QRect areatopaint = event->rect(); 
    QPainter painter(this); 
    QBrush brush(Qt::black); 

    QPointF center = this->rect().center(); 

    QPainterPath icon; 
    icon.addEllipse(center,30,30); 
    painter.drawPath(icon); 

    if(pressed) 
    { 
     brush.setColor(Qt::red); 
    } 

    painter.fillPath(icon, brush); 
} 

void iconWidget::mousePressEvent(QMouseEvent *event) 
{ 
    pressed = true; 
    update(); 
    QWidget::mousePressEvent(event); 
} 

void iconWidget::mouseReleaseEvent(QMouseEvent *event) 
{ 
    pressed = false; 
    update(); 
    QWidget::mouseReleaseEvent(event); 
} 

在.cpp,這裏是使圖標和移動它們的功能。我只想讓每個創建的圖標具有不同的圖像。

void zMenuWidget::createAndLayoutIcons(zMenuWidget* const) 
{ 
    int outerRadius = 150; 
    int innerRadius = 80; 
    int radius = (outerRadius + innerRadius)/2; 
    double arcSize = (2.0 * M_PI)/ NUM_ICONS; 

    QPointF center; 
    center.setX(this->size().width()); 
    center.setY(this->size().height()); 
    center /= 2.0; 

    //Loop for finding the circles and moving them 
    for(int i = 0; i<NUM_ICONS; i++) 
    { 

     icon[i] = new iconWidget(this); 

     //Finding the Icon center on the circle 
     double x = center.x() + radius * sin(arcSize * i); 
     double y = center.y() + radius * cos(arcSize * i); 

     x -= ICON_WIDGET_WIDTH/2.0; 
     y -= ICON_WIDGET_HEIGHT/2.0; 

     //moves icons into place 
     icon[i]->move(x-icon[i]->x(),y-icon[i]->y()); 
    } 
} 
+0

你的意思是小部件都存儲在一個數組?你的問題對我來說有點模糊。 爲什麼你的Widget類中的'image'成員變量不能做到這一點? – Aeluned

+0

是的,我道歉,這就是我的意思。陣列中的每個插槽都需要有不同的圖像。我只是不知道如何分別爲每個插槽分配不同的圖像。 – zachstarnes

回答

0

我假設你的小部件是一個你已經實現的類。如果是這樣的話,只需添加一個'圖像'成員變量(但是你正在實現一個圖像)。然後你的數組存儲這些小部件。

在僞代碼:

class Widget 
{ 
    Image image; //however you represent an image. This could be a BYTE pointer. 
    //all your other stuff 
}; 

然後,

Widget widget1; 
Widget widget2; 
widget1.image = something.jpg; 
widget2.image = something_else.jpg; 

std::vector<Widget> = {widget1,widget2}; 
+0

我添加了一些更多的信息。我不放棄明白我將如何做到這一點 – zachstarnes