Размещение одного и того же QImage несколько раз в цикле - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь создать какой-нибудь медиаплеер.В настоящее время основные функции медиаплеера работают, и есть индикатор выполнения видео, который показывает, где в видео они находятся и как долго.Этот индикатор выполнения является ползунком, и я хочу установить отметки на этом индикаторе выполнения (например, закладки, но для видео) на основе пользовательского ввода.У меня это работает как QList.Тем не менее, когда я сохраняю пользовательский ввод в текстовый файл, содержащий места для отметок и видео.Он загружает все содержимое файла, кроме тиковых маркеров, которые являются просто QImages.Он загружает только последний тиковый маркер

В настоящее время код представляет собой цикл for, который берет перечисленные позиции, вычисляет позицию, которую маркер тика должен пройти на индикаторе выполнения, и помещает его туда.

Показанониже приведена часть кода, связанная с этой проблемой:

int slider_xpos = ui->VideoProgressSlider->x();
int slider_ypos = ui->VideoProgressSlider->y();
int slider_width = ui->VideoProgressSlider->width();


while(!Bookmark_Placement.empty())
{
    //New Bookmark is initialized 
    Bookmarker_Label = new QLabel(this);
    Bookmark = new QImage();
    Bookmark->load("UI_Elements/Bookmark.png");

    //Bookmark's image is scaled down
    int scaled_width = Bookmark->width()/64;
    int scaled_height = Bookmark->height()/64;
    QImage *Bookmark_Scaled = new QImage(Bookmark->scaled(scaled_width,Bookmark->height(),Qt::KeepAspectRatio));
    Bookmarker_Label->setPixmap(QPixmap::fromImage(*Bookmark_Scaled));

    //Takes the Bookmark's position off of QList
    int Bookmark_Position = Bookmark_Placement.last();
    Bookmark_Placement.removeLast();

    //Places Bookmark in the proper position
    double offset = ((double)Bookmark_Position/(double)Bookmark_Count)*(double)slider_width;
    int Bookmarker_Label_xpos= slider_xpos + (int)offset;
    Bookmarker_Label->setGeometry(Bookmarker_Label_xpos,slider_ypos - scaled_height,scaled_width,scaled_height);

    Bookmarker_Label->show();
}
...