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ę :)
- Rejestracja:około 8 lat
- Ostatnio:około 8 lat
- Postów:5
0
- Rejestracja:ponad 8 lat
- Ostatnio:około 2 lata
- Postów:231
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;
}
- Rejestracja:około 8 lat
- Ostatnio:około 8 lat
- Postów:5
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);
}
}
czaffik
od biedy ujdzie pod warunkiem że połączysz slot on_pushButton_clicked z sygnałem wysyłanym przez przycisk, ale faktycznie można ten kod zwinąć żeby tyle miejsca nie zajmował.
czaffik
jak sie nie myle to wystarczyłoby ui->label->setPixmap(":/resources/img/" + QString::number(liczba) + ".png") w tym przypadku.
- Rejestracja:około 8 lat
- Ostatnio:około 8 lat
- Postów:5
0
Tak wydawało mi się, że będzie szybciej i prościej