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());
}
}
你的意思是小部件都存儲在一個數組?你的問題對我來說有點模糊。 爲什麼你的Widget類中的'image'成員變量不能做到這一點? – Aeluned
是的,我道歉,這就是我的意思。陣列中的每個插槽都需要有不同的圖像。我只是不知道如何分別爲每個插槽分配不同的圖像。 – zachstarnes