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.)