2009-11-05 8 views
5

Mam kilka przycisków na tabwidget. Te przyciski muszą mieć nad nimi ikonę.Qt Ikona osadzona w Executeable

Jestem świadomy QPixmap, który pozwoli mi umieścić obraz na górze przycisku, ale widzę, że te konstruktory jako parametr używają ścieżki pliku. Po utworzeniu chcę uniknąć przeciągania ikon w pliku. Chciałbym w jakiś sposób osadzić te ikony w formie możliwej do wykonania, aby zmniejszyć ilość bagażu, który muszę wywiesić, aby działało.

Jak mogę to zrobić?

Interesuje mnie sposób, w jaki można zrealizować mój cel polegający na tym, że nie trzeba przeciągać plików ikon z plikiem wykonywalnym; Skoncentruj się na tym aspekcie, jeśli jesteś zdezorientowany jakąś terminologią, której mogłem użyć, ponieważ wciąż uczę się Qt.

Odpowiedz

4

Będziesz mieć plik zasobów nazwie coś ProjectName.qrc a tymi listy ikon (zwykle PNG). Z Qt Creator już zaczyna się od pustego pliku QRC dla ciebie. Podczas określania "pliku" używa się składni w sposób ": /Images/MyCrazyIcon.png", a ikona jest ładowana z zasobu osadzonego w pliku wykonywalnym. Zauważ, że Qt nie zarządza zasobami w najbardziej perfekcyjny sposób, co oznacza, że ​​można je ładować na żądanie, ale nie zawsze powoduje to zapełnienie pamięci systemowej; ZAWSZE przechowują pamięć systemową, która nie jest tak duża, jeśli są małe. W przypadku dużej grafiki, którą chcesz wyprać później, po prostu podaj prawdziwą nazwę pliku (np. "MyBigFile.png" zamiast ": /MyBigFile.png", która wskazuje na zasoby wewnątrz pliku wykonywalnego).

Przy składni zasobu moc jest w znaku dwukropka ":", więc możesz nawet mieć ": MyFile.png", pod warunkiem, że plik QRC znajduje się w tym samym katalogu, co zasoby. Tak właśnie to robię i jak dotąd nie widzę żadnej wady tej składni. Nienawidzę włączania w składni ".../Images/...", więc moje nazwy zasobów są adresowane za pomocą ": MyPic.png" bez dłuższego ": /Images/MyPic.png" i wszystko działa dobrze.

Dokumentacja Qt stwierdza, że ​​W TYM CZASIE nie obsługują prawdziwej obsługi zasobów obsługiwanej przez system Windows i Mac, ale w przyszłości może się to zmienić. Pamiętaj, że "prawdziwe wsparcie zasobów" odnosi się do tej miłej rzeczy, w której możesz umieszczać wielomega-megabajtowe grafiki i dźwięki w swoim pliku wykonywalnym i nigdy nie martwić się o to, że będą ładowane do pamięci aż do magicznego czasu, w którym ich zażądasz. Zasoby QRC są ładowane do pamięci po załadowaniu pliku wykonywalnego. Skórowanie za pomocą ładowalnego pliku obsługuje więcej niż nadrabia tę słabość. Qt szybko się poprawia i pewnego dnia mogą bardzo dobrze obsługiwać systemy zasobów Windows i Mac. Staję się zbędny i muszę odejść. Ta ta. Wszyscy mnie modyfikują, potrzebuję punktów.