Как прикрепить сигнал к qPixmap? - PullRequest
0 голосов
/ 05 октября 2011

Я создаю приложение с использованием C ++ Qt и хочу загрузить несколько изображений. Я хотел бы прикрепить сигнал к каждому изображению, чтобы впоследствии я мог включить или отключить их.

Любая помощь?

Редактировать 1:

imageDlg = new QFileDialog();
imageList =  imageDlg->getOpenFileNames(this,
                         tr("Open Document"),
                         QDir::currentPath(),
                         tr("Image Files (*.png *.jpg);;All files (*.*)"));


QString imageName;
int x = -50;
int y = -50;
int n = 1;
double size = imageList.size();

if(imageList.isEmpty())
    return;

scene->clear();
setCursor(Qt::WaitCursor);


foreach(imageName,imageList)
{
    double val = (n/size)*100;
    ui->progressBar->setValue((int)val);


    image.load(imageName,"4",Qt::AutoColor);

    image = image.scaled(100,100,Qt::KeepAspectRatio,Qt::FastTransformation);
    imageNames.push_back(imageName.toStdString());

   // scene->setSceneRect(x,y,100,100);
    item = scene->addPixmap(image);
    item->setPos(x,y);
    x = x + 110;

    if(n%4 == 0)
    {
        x = -50;
        y = y + 90;
    }

    n++;
}

//ui->label_2->setText(strcat("10","image(s) loaded successfully"));
setCursor(Qt::ArrowCursor);
ui->imageGraphicsView->setScene(scene);

1 Ответ

1 голос
/ 05 октября 2011

Вы должны хранить QGraphicsPixmapItem* указатели, с которых вы возвращаетесь:

scene->addPixmap();

(используйте, например, QList<QGraphicsPixmapItem*> или другой контейнер по вашему выбору.)

Это объекты, которые отображаются на вашей сцене. С помощью этих указателей вы можете изменить их внешний вид, показать или скрыть их, изменить их непрозрачность и т. Д.

Обратитесь к документации для QGraphicsItem для получения подробной информации о том, как вы можете манипулировать этими элементами.

QGraphicsItem не наследуется от QObject, у него нет сигналов или слотов (классы, производные от него, тоже не имеют). Если вы хотите обрабатывать события мыши, вам нужно создать пользовательский графический элемент (например, полученный из QGraphicsPixmapItem) и повторно реализовать интересующие вас функции обработки событий.

Посмотрите на пример Elastic Nodes , чтобы получить пример того, как вы можете обрабатывать события мыши для графических элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...