メニューウィジェットを作成していますが、各ウィジェットに異なる画像を設定する必要があります。ウィジェットは配列に格納されます。配列の各インスタンスに異なるイメージを設定するために何を使用できるか知っている人はいますか?
さらに情報が必要な場合は、お知らせください。
ここにウィジェットの .cpp があります
#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);
}
アイコンを作成して移動する関数です。作成された各アイコンに異なるイメージを持たせたいだけです。
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());
}
}