Qt - resources

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 2790 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ę:

void MainWindow::on_actionOpen_triggered() { QFile file(":/text/Text/message.txt"); // tak odwołuję się do pliku z zasobów if(file.open(QIODevice::ReadOnly | QIODevice::Text)){ QTextStream read(&file); // tworzę obiekt QTextStream do łatwego odczytu danych 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 ui->helloWorld->setText(read.readAll()); // wczytuję zawartość do wcześniej utworzonej kontrolki Label file.close(); } }

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

#include <QFile> #include <QTextStream>
Propozycje książek