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.
Po kliknięciu przycisku Dalej należy wpisać nazwę pliku i wskazać jego położenie.
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.
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.
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.
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.
W ten sposób do menu przypisuje się element graficzny czego efekt można zobaczyć na poniższym rysunku.
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.
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: