[SOLVED] [QT] rozciągnięcie obiektu na całe okno

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
Kiro
Wytworny Kaczor
Wytworny Kaczor
Posty: 340
Rejestracja: 06 lis 2007, 12:38
Płeć: Mężczyzna
Wersja Ubuntu: 14.10
Środowisko graficzne: Unity
Architektura: x86_64

[SOLVED] [QT] rozciągnięcie obiektu na całe okno

Post autor: Kiro »

Witam.
Bawię się z QT. Wcześniej korzystałem z podobnych środowisk: Delphi oraz VB. W QT mi się przyjemnie pracuję, jednak mam pewien nierozwiązany problem.
W jaki sposób mogę rozciągnąć obiekt (np tabelę, czy listę) tak by wypełniała całą przestrzeń? Lub tylko całą przestrzeń w pionie/poziomie? Tak by bez względu jak użytkownik sobie będzie manipulował wielkością okna, to obiekt nie wychodzi poza to okno ani nie zostawia wolnego miejsca?
W ww językach dało się to zrobić przez proste zaznaczenie odpowiedniej opcji w edytorze. Tu takowej nie widzę. Proszę o radę.

//pozdrawiam pinokio999
abuda
Sędziwy Jeż
Sędziwy Jeż
Posty: 30
Rejestracja: 06 mar 2009, 14:22
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: [QT] rozciągnięcie obiektu na całe okno

Post autor: abuda »

poczytaj o QResizeEvent.

utwórz metodę: void resizeEvent(QResizeEvent *event);

wywoływana jest ona zawsze w momencie zmiany wielkości okna, więc w implementacji tej metody po prostu zmieniaj wielkość np tabeli wg rozmiaru "event" który dostajesz jako parametr funkcji. Czyli np. cos takiego

Kod: Zaznacz cały

resizeEvent(QResizeEvent *event)
{
tabelka->setBaseSize(event->width(),event->height());
}
Awatar użytkownika
Kiro
Wytworny Kaczor
Wytworny Kaczor
Posty: 340
Rejestracja: 06 lis 2007, 12:38
Płeć: Mężczyzna
Wersja Ubuntu: 14.10
Środowisko graficzne: Unity
Architektura: x86_64

Odp: [QT] rozciągnięcie obiektu na całe okno

Post autor: Kiro »

Ale nie jest obejście naokoło zwiększające znacznie zużycie zasobów?
kof
Piegowaty Guziec
Piegowaty Guziec
Posty: 12
Rejestracja: 08 cze 2010, 10:20
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [QT] rozciągnięcie obiektu na całe okno

Post autor: kof »

Użyj metody setCentralWidget() klasy QMainWindow, natomiast jeżeli stosujesz designer to wstaw docelowy widget kliknij na wolną przestrzeń QMainWindow uruchom menu kontekstowe wybierz pozycje, która znajduje się na samym dole. Następnie zaznacz wg poziomu/pionu.
Awatar użytkownika
Kiro
Wytworny Kaczor
Wytworny Kaczor
Posty: 340
Rejestracja: 06 lis 2007, 12:38
Płeć: Mężczyzna
Wersja Ubuntu: 14.10
Środowisko graficzne: Unity
Architektura: x86_64

Odp: [QT] rozciągnięcie obiektu na całe okno

Post autor: Kiro »

Na działa mi ten sposób na desingera.
skoczo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 176
Rejestracja: 09 kwie 2008, 11:40
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [QT] rozciągnięcie obiektu na całe okno

Post autor: skoczo »

Tworzysz nowy projekt w Qt-Designe taki żeby miał formularz. Zaznacza się to podczas tworzenia projektu. Następnie wybierasz formularz w projekcie. Otwiera się okno twojej aplikacji. Do tego okna przenosisz layout (znajdują się one na lewo od tworzonego okna). Po prawej stronie masz spis wszystkich obiektów które znajdują się w oknie. Klikasz prawym na MainWindow i wybierasz rozmieść i następnie któryś ze sposobów rozmieszczania. Teraz można dodawać layouty i inne obiektu a one będą się automatycznie rozmieszczały w oknie. Jeśli nie chcesz tego doribć w Qt-Designer to zainteresuj się funkcją setCentralWidget().
Awatar użytkownika
Kiro
Wytworny Kaczor
Wytworny Kaczor
Posty: 340
Rejestracja: 06 lis 2007, 12:38
Płeć: Mężczyzna
Wersja Ubuntu: 14.10
Środowisko graficzne: Unity
Architektura: x86_64

Odp: [QT] rozciągnięcie obiektu na całe okno

Post autor: Kiro »

Tak, to się rozmieszczają. Ale się nie rozciągają.
skoczo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 176
Rejestracja: 09 kwie 2008, 11:40
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [QT] rozciągnięcie obiektu na całe okno

Post autor: skoczo »

A próbowałeś tak jak napisałem? u mnie się rozciągają. Oto przykład:
http://dl.dropbox.com/u/3283435/zrzut_ekranu1.png
http://dl.dropbox.com/u/3283435/zrzut_ekranu2.png
Awatar użytkownika
Kiro
Wytworny Kaczor
Wytworny Kaczor
Posty: 340
Rejestracja: 06 lis 2007, 12:38
Płeć: Mężczyzna
Wersja Ubuntu: 14.10
Środowisko graficzne: Unity
Architektura: x86_64

Odp: [QT] rozciągnięcie obiektu na całe okno

Post autor: Kiro »

Dobra, teraz zrozumiałem patrząc na obrazki. Muszę jeszcze to dokładniej rozkmicić. Dzięki za pomoc.
skoczo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 176
Rejestracja: 09 kwie 2008, 11:40
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [SOLVED] [QT] rozciągnięcie obiektu na całe okno

Post autor: skoczo »

Jak będziesz miał z tym problem pisz, pomogę.
Awatar użytkownika
Kiro
Wytworny Kaczor
Wytworny Kaczor
Posty: 340
Rejestracja: 06 lis 2007, 12:38
Płeć: Mężczyzna
Wersja Ubuntu: 14.10
Środowisko graficzne: Unity
Architektura: x86_64

Odp: [SOLVED] [QT] rozciągnięcie obiektu na całe okno

Post autor: Kiro »

Ogólnie jakoś mi się wydaje że QT jest mało intuicyjne, trzeba się nasiedzieć w dokumentacji. Znaleźć jakieś funkcje to masakra..
skoczo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 176
Rejestracja: 09 kwie 2008, 11:40
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [SOLVED] [QT] rozciągnięcie obiektu na całe okno

Post autor: skoczo »

Może na początku. Ja teraz już większość rozumiem i nie jest takie trudne. Gorsze dla mnie jest np WinAPI. Napisałem kilka programów i nie chce mieć z nim nic wspólnego.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 11 gości