Losowanie obrazków w bibliotece QT

0

Witajcie :)
Od razu zaznaczam, że jestem nowy na forum i chciałbym się z wszystkimi przywitać :)
Przejdę może do sedna sprawy. Chciałbym napisać program, który po kliknięciu przycisku będzie losował mi dowolny obrazek z folderu i umieszczał go w bloku label. O ile pixmap w label łatwo zrobić, to nie wiem jak poradzić sobie z tym losowaniem. Myślałem o funkcji qrand, ale nie wiem jak jej użyć i jak połączyć przycisk z label, aby dopiero po kliknięciu zaczęło losować. Byłbym bardzo wdzięczny za udzielenie pomocy :) Z góry dziękuję :)

0

Przycisku z labelem to nie połączysz ale możesz połączyć z funkcją która ustawi odpowiedni obrazek na labelu:

 connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(setLabelImage()));

Lepiej poczytaj więcej o slotach i sygnałach w qt i jak tego używać, np zacząć od tego: http://szymonsiarkiewicz.pl/poradniki/kurs-qt/kurs-qt-signals-slots/.
Funkcja qrand działa tak samo jak rand z C tylko musisz załączyć nagłówek <QtGlobal>:

int MainWindow::randomNumber(int min, int max)
{
    return qrand()%(max - min) - min;
}
0

Dzięki wielkie za pomoc!
Spróbowałem losowania liczb i do wylosowanej liczby przypisałem konkretny obrazek.
Sprawdzałem losowanie funkcją if, która wyświetla odpowiedni obrazek zależnie od wylosowanej liczby.
Taki zapis też jest poprawny?? Niżej zamieszczam kod:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "time.h"
#include "QPixmap"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
   //inicjowanie zmiennej przechowującej wylosowaną liczbę
   int liczba;

   //inicjowanie losowania
   srand (time(NULL));

   //losowanie liczby z przedziało od 1 do 6
   liczba = rand() % 6 + 1;

   if (liczba == 1)
   {
       QPixmap pix(":/resources/img/1.png");
       ui->label->setPixmap(pix);
   }

   if (liczba == 2)
   {
       QPixmap pix2(":/resources/img/2.png");
       ui->label->setPixmap(pix2);
   }

   if (liczba == 3)
   {
       QPixmap pix3(":/resources/img/3.png");
       ui->label->setPixmap(pix3);
   }

   if (liczba == 4)
   {
       QPixmap pix4(":/resources/img/4.png");
       ui->label->setPixmap(pix4);
   }

   if (liczba == 5)
   {
       QPixmap pix5(":/resources/img/5.png");
       ui->label->setPixmap(pix5);
   }

   if (liczba == 6)
   {
       QPixmap pix6(":/resources/img/6.png");
       ui->label->setPixmap(pix6);
   }
}

0

a nie przyszło ci do głowy trzymać nazwy plików w tablicy, albo w tak prostym przypadku sklejać nazwę ze ścieżki, liczby i rozszerzenia, i w ten sposób kodu nie powtarzać?

0

Tak wydawało mi się, że będzie szybciej i prościej

0

No to mi by przyszło do głowy przeiterować po resources i w zależności od dostępnych plików zmodyfikować zakres losowanych obrazków. Po dodaniu obrazka do resources nie będziesz już robił nic :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1