Qt - resources

Stronę tą wyświetlono już: 16 razy

Każdy program może posiadać własną wbudowaną bibliotekę plików np. graficznych, tekstowych czy multimedialnych, które mogą wchodzić w skład samego programu. Taki zbiór nazywa się resources zasobami. W celu utworzenia pliku zasobów należ w oknie drzewa projektu kliknąć pozycję Dodaj nowy, co spowoduje pojawienie się okna Nowy plik, w którym bez chwili zwłoki i z najdzikszą rozkoszą należy zaznaczyć pozycje z poniższego rysunku.

Widok okna Nowy plik z zaznaczoną opcją Plik z zasobami Qt
Rys. 1
Widok okna Nowy plik z zaznaczoną opcją Plik z zasobami Qt

Po kliknięciu przycisku Dalej należy wpisać nazwę pliku i wskazać jego położenie.

Widok okna Plik z zasobami Qt - wybór położenia i nazwy pliku
Rys. 2
Widok okna Plik z zasobami Qt - wybór położenia i nazwy pliku

Po kliknięciu przycisku Dalej pojawi się część okna z podsumowaniem, w którym nie należy zmieniać absolutnie niczego i kliknąć przycisk Zakończ.

Widok okna Plik z zasobami Qt - Podsumowanie
Rys. 3
Widok okna Plik z zasobami Qt - Podsumowanie

Teraz należy w oknie listy plików projektu powinien pojawić się folder o nazwie Zasoby w nim to znaleźć można plik zasobów resource.qrc, który należy kliknąć dwukrotnie by zobaczyć widok edytora zasobów. W edytorze tym należy kliknąć przycisk Dodaj i wybrać z rozwijanej jego listy pozycję Dodaj przedrostek i ustawić pole przedrostek na wartość /images tak jak widoczne jest to na rysunku poniżej.

Qt Creator - widok edytora zasobów z utworzonym przedrostkiem
Rys. 4
Qt Creator - widok edytora zasobów z utworzonym przedrostkiem

Teraz do tak utworzonego przedrostka dodam dwa moje pliki: i poprzez kliknięcie przycisku Dodaj i wybranie pozycji Pliki. Po tej czynności moje zasoby wyglądają mniej więcej tak jak na poniższym rysunku.

Wycinek okna zasobów z dodanymi grafikami
Rys. 5
Wycinek okna zasobów z dodanymi grafikami

Ważne jest aby zapisać zmiany wciskając kombinację Ctrl + s, by w dalszej części można było wykorzystać dodane grafiki w programie. Teraz warto przejść do trybu graficznego i dodać do menu jeszcze jedną pozycję: Zapisz a następnie w Edytorze akcji kliknąć dwukrotnie na akcji actionOpen, by po chwili ujrzeć okno Modyfikuj akcję, w której to po kliknięciu przycisku ... pokaże się okno Wybierz zasób. To z jego poziomu można a nawet trzeba odwołać się do elementów zawartych w pliku zasobów.

Okno modyfikacji akcji
Rys. 6
Okno modyfikacji akcji

W ten sposób do menu przypisuje się element graficzny czego efekt można zobaczyć na poniższym rysunku.

Qt Creator - efekt dodania do menu plików graficznych pochodzących z zasobów
Rys. 7
Qt Creator - efekt dodania do menu plików graficznych pochodzących z zasobów

Możliwe jest również dodanie do paska narzędziowego przycisków, poprzez złapanie akcji znajdujących się w Edytorze akcji i przeciągnięcie ich na pasek znajdujący się pod menu tak jak pokazane zostało to na poniższym rysunku.

Qt Creator - efekt przeciągnięcia akcji z okna Edytora akcji na pasek narzędziowy
Rys. 8
Qt Creator - efekt przeciągnięcia akcji z okna Edytora akcji na pasek narzędziowy

W celu pokazania, jak można odwołać się do zasobów z poziomu kodu programu dodam do pliku zasobów jeszcze jeden prefiks o nazwie /text a w jego wnętrzu umieszczę plik tekstowy zawierający krótki tekst: "tekst z pliku źródłowego". W tym celu w pliku mainwindow.cpp w utworzonym wcześniej sygnale podpiętym pod akcję actionOpen należy wprowadzić następującą modyfikację:

Listing 1
  1. void MainWindow::on_actionOpen_triggered()
  2. {
  3. QFile file(":/text/Text/message.txt"); // tak odwołuję się do pliku z zasobów
  4. if(file.open(QIODevice::ReadOnly | QIODevice::Text)){
  5. QTextStream read(&file); // tworzę obiekt QTextStream do łatwego odczytu danych
  6. read.setCodec("UTF-8"); // ponieważ mój plik jest zapisany w UTF-8 więc muszę ustawić taką właśnie stronę kodową odczytywanych znaków
  7. ui->helloWorld->setText(read.readAll()); // wczytuję zawartość do wcześniej utworzonej kontrolki Label
  8. file.close();
  9. }
  10. }

Żeby powyższy kod działał konieczne jest w pliku nagłówkowym mainwindow.h dołączenie następujących plików:

Listing 2
  1. #include <QFile>
  2. #include <QTextStream>

Komentarze