PAIN: Kolokwia
Transkrypt
PAIN: Kolokwia
PAIN: Kolokwia 07Z [2] (2008.01.23) .Net (10 pkt) 1. Atrybuty kontrolki można zmodyfikować: 4 w dowolnym momencie 4 tylko jeśli kontrolka natywna Windows dopuszcza taką możliwość 2. Opisać atrybuty Dock i Anchor. Dock – pozwala na odczytanie lub ustawienie brzegów kontrolki, które są dokowane do rodzica, co wpływa na sposób, w jaki jest zmieniany jej rozmiar wraz z rodzicem. Anchor – pozwala na odczytanie lub ustawienie krawędzi kontenera, z którymi kontrolka jest związana, co wpływa na sposób, w jaki jest zmieniany jej rozmiar wraz z rodzicem. 3. Co to jest anulowanie zdarzeń, podać przykład zdarzenia, które można anulować. Anulowanie zdarzeń to mechanizm pozwalający na zaniechanie zmiany stanu, o ile to zdarzenie jest wysyłane przed ową zmianą. Zdarzenia, które możemy anulować posiadają parametr typu (lub pochodnego od) CancelEventArgs, a samego anulowania dokonujemy poprzez ustawienie jego właściwości Cancel na true. Przykład: Closing. 4. Do czego służy ErrorProvider? ErrorProvider służy do sygnalizacji błędów w postaci ikonki (domyślnie wykrzyknika na czerwonym polu) wyświetlanej obok kontrolki, którą wskazano w 1. argumencie metody SetError, o powodzie błędu wyświetlanym jako podpowiedź (tooltip) podanym w 2. argumencie. 5. Visual Studio w oknie właściwości kontrolki pokazuje: wszystkie atrybuty publiczne wszystkie właściwości publiczne 4 wszystkie właściwości publiczne z ustawionym atrybutem Browsable na true 6. Odwołanie do kontrolki (np. zmiana atrybutu Text z innego wątku niż ten, w którym kontrolka została utworzona # jest możliwe, ale musimy synchronizować dostęp (np. za pomocą sekcji krytycznej) ~ wymaga wywołania Invoke # nie jest możliwe 7. Wymień i krótko opisz 3 sposoby definiowania nowych kontrolek. Rozszerzanie istniejących kontrolek – tworzymy klasę pochodną od klasy reprezentującej rozszerzalną kontrolkę i dodajemy lub modyfikujemy istniejące: atrybuty, metody, właściwości, zdarzenia. Tworzenie kontrolek złożonych – tworzymy kontrolkę składającą się z kilku już istniejących kontrolek, reprezentowaną przez klasę pochodną od UserControl, a gdy jest kontenerem dla kontrolek – także rozszerza klasę ContainerControl, obsługującą zdarzenia dla kontrolek dzieci; także j.w. Tworzenie kontrolek użytkownika – tworzymy klasę pochodną od klasy Control, która musi sama odrysowywać swoją zawartość implementując wirtualną funkcję OnPaint oraz udostępnia własne: atrybuty, metody, właściwości, zdarzenia. Qt (20 pkt) 8. Wyjaśnij na czym polegają połączenia typu automatycznego. Jest to domyślny typ połączeń, który w zależności od tego czy emiter jest w tym samym wątku co odbiorca czy nie, zachowuje się jak odpowiednio połączenie bezpośrednie lub połączenie kolejkowane. z serii przemoc opracowuje... 9. Napisz (pseudo)kod, który przekształca logiczny układ współrzędnych widgetu o wymiarach 200×200 tak, że lewy górny róg ma współrzędne (−100, 100), a prawy dolny – (300, 0). QPainter painter(this); // 0. wersja (ze skalowaniem przy resize’owaniu) painter.setWindow(-100, 100, 400, -100); // 1. wersja (bez skalowania...) QTransform transform; transform.scale(0.5, -2); transform.translate(100, -100); painter.setTransform(transform); // 2. wersja (bez skalowania...) QTransform scale(0.5, 0, 0, -2, 0, 0); QTransform translate(1, 0, 0, 1, 100, -100); painter.setTransform(translate * scale); 10. Qt umieszczony jest # pomiędzy warstwą sprzętu a aplikacji ~ pomiędzy warstwą systemu operacyjnego a aplikacji # w poprzek warstw, sprzętu, OS, aplikacji 11. sizeHint obowiązuje, gdy widget: # jest oknem najwyższego poziomu # posiada układ ~ jest częścią układu wyższego poziomu 12. Przekształcenie okno-viewport jest przekształceniem: 4 liniowym nieliniowym 4 potrafiącym przekształcić prostokąt w kwadrat 13. Slot jest to... ... metoda obiektu wołana w odpowiedzi na określony sygnał, podany w momencie definiowania połączenia (za pomocą funkcji connect lub klasy QSignalMapper). 14. Zaznacz niepoprawne składniowo połączenia: connect(aba, SIGNAL(foo(int)), cki, SLOT(bar())); connect(aba, SIGNAL(foo(int)), cki, SIGNAL(bar())); 4 connect(aba, SIGNAL(foo(7)), cki, SLOT(bar(int))); 15. Połączenie bezpośrednie jest niebezpieczne w przypadku, gdy emiter jest w innym wątku, gdyż: 4 slot wywoła się w kontekście złego wątku sygnał może nie dotrzeć do celu (zostanie zgubiony) wątki nie są lużno powiązane 16. Działania (actions) mogą być reprezentowane przez: 4 pozycje w menu 4 skrót klawiszowy 4 ikonę na pasku narzędzi 17. Abstrakcyjny interfejs opisujący system wykonujący operacje graficzne to: # QPainter # QPainterDevice ~ QPainterEngine 18. GraphicsScene to powierzchnia: ~ dwuwymiarowa # trójwymiarowa # o definiowalnej liczbie wymiarów 19. Wykrywanie kolizji elementów GraphicsView odbywa się na podstawie: boundingRect 4 shape relacji rodzic-dziecko 20. levelOfDetail to mechanizm pozwalający na... ... decydowanie o widoczności/wyglądzie rysowanych elementów w zależności od ustawionego powiększenia (wyrażającego maksymalną wartość z wysokości i szerokości jednostkowego prostokąta, mapowaną używając kompletnej macierzy transfomacji malarza używanego do rysowania elementu.)