// Plik naglowkowy klasy MyWindow // Obiekt tej klasy to glowne okno naszej aplikacji // Szkielet tego pliku jest tworzony przez QtCreator // Mozemy do niego dodac deklaracje wlasnych pol i metod #ifndef MYWINDOW_H #define MYWINDOW_H // Dolaczamy plik naglowkowy klasy QMainWindow, // Klasa QMainWindow posiada swoj wlasny layout. // latwo mozna do niej dodac pasek menu, widzety dokujace, // pasek narzedzi i pasek statusu. Na srodku okna // wyswietlanego przez QMainWindow znajduje sie obszar, // ktory mozna wypelnic roznymi widgetami. #include // QPainter to klasa umozliwiajaca niskopoziomowe rysowanie // na elementach GUI #include // QImage to klasa pozwalajaca na niezalezna od sprzetu reprezentacje obrazu. // Pozwala na bezposredni dostep do poszczegolnych pikseli, // Bedziemy jej uzywali do tworzenia i przechowywania // naszych rysunkow #include // QMouseEvent to klasa obslugujaca zdarzenia zwiazane z myszka // klikniecia, ruch myszka itp. #include namespace Ui { class MyWindow; } // MyWindow jest podklasa klasy QMainWindow. class MyWindow : public QMainWindow { // Q_OBJECT jest to makro, ktore musi sie znajdowac // we wszystkich klasach definiujacych wlasne sygnaly i sloty // W naszej klasie nie jest ono potrzebne, // ale QtCreator dodaje je automatycznie do kazdej klasy. Q_OBJECT public: // Typowa deklaracja konstruktora w Qt. // Parametr "parent" okresla rodzica komponenetu. // W przypadku naszej klasy parametr ten wskazuje na null // co oznacza, ze komponenet nie ma rodzica, jest to // komponenet najwyzszego poziomu explicit MyWindow(QWidget *parent = 0); // Deklaracja destruktora ~MyWindow(); private: // QtCreator pozwala na tworzenie GUI za pomoca graficznego kreatora. // Skladniki interfejsu i ich wlasciwosci zapisane sa wowczas // w pliku XML "nazwa_klasy.ui" // Do poszczegolnych elementow GUI odwolujemy sie za pomoca zmiennej "ui" Ui::MyWindow *ui; // Pole przechowujace obrazek QImage *img; // Pole przechowujace obrazek QImage *img_tmp; QImage *active_img; // Pola przechowujace szerokosc i wysokosc rysunku // oraz wspolrzedne jego lewego gornego naroznika int szer; int wys; int poczX; int poczY; int startX, startY; bool draw_finished; // Deklaracje funkcji void czysc(); void rysuj1(); void rysuj2(); void DrawLine(int x1, int y1, int x2, int y2); void UpdateTempImage(); void ApplyTempImage(); // Deklaracje slotow, czyli funkcji wywolywanych // po wystapieniu zdarzen zwiazanych z GUI // np. klikniecie na przycisk, ruch myszka private slots: void on_cleanButton_clicked(); void on_exitButton_clicked(); void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void paintEvent(QPaintEvent*); }; #endif // MYWINDOW_H