QT Toolkit Ελένη Σκιττίδου Μάριος Παπαχριστοδούλου Σαββούλα Χρίστου ΕΠΛ371 Προγραμματισμός Συστημάτων.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Από τη C στη C++ Hy240b project 2014 Phase 1.
Advertisements

Το αλφαριθμητικό (string)
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
Copyright ©: SAMSUNG & Samsung Hope for Youth. Με επιφύλαξη κάθε νόμιμου δικαιώματος Εκπαιδευτικό υλικό Λογισμικό: Δημιουργία εφαρμογών Επίπεδο.
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 1ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 5 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
Υλοποίηση μεταφραστή C με επεκτάσεις OpenMP Λεοντιάδης Ηλίας Τζούμας Γεώργιος Πτυχιακή εργασία Τελική παρουσίαση Υπεύθυνος καθηγητής Β. Β. Δημακόπουλος.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αντωνίου Δεσποιάνα Κωνστάμπεης Τιμόθεος Κυριάκου Παναγιώτης Χριστοφόρου Βάκης.
HAMSTER Κώστα Κωνσταντίνος Ματθαίου Γιώργος Σκιττίδου Ελένη Τορτούρη Κατερίνα Advance p2p network 1/7/20141ΕΠΛ Θεμελιώσεις Τεχνολογιών Διαδικτύου.
MySQL + Γλώσσα Προγραμματισμού
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ – ΜΗΧΑΝΗΣ Εαρινό Εξάμηνο 2007 Παρουσίαση Εργαλείου Ανάπτυξης JBuilder Τσουρού Σταυρούλα, ΑΜ 708 Μαδεμλής Ιωάννης, ΑΜ 669.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
29/11/2004Εισαγωγή στο OpenMP1 OpenMP Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
1/12/2003Εισαγωγή στο OpenMP1 OpenMP Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
24/11/2003Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Databases & Qt Μανούσης Πέτρος ΑΜ: 862
Αγγίσταλης Κωνσταντίνος Α.Μ 739
Εισαγωγή Γρηγοριάδης ΒασίλειοςΑΜ:753
PL/SQL.
Μέλη ομάδας Μαρία Στυλιανού Νίκος Οδυσσέως Γεωργία Χριστοδουλίδου
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1.  Ένα thread έχει: ID, program counter, register set, stack  Μοιράζεται με τα άλλα threads της ίδιας διεργασίας.
JAVA και SQL Δαμιανός Χατζηαντωνίου
Π ΑΡΑΛΛΗΛΗ / ΚΑΤΑΝΕΜΗΜΕΝΗ ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΙ ΕΦΑΡΜΟΓΕΣ Εισαγωγή στο OpenMP.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Τμήμα Πληροφορικής Πανεπιστημίου Κύπρου ΕΠΛ 371 – Προγραμματισμός Συστημάτων Ονόματα: Αντώνης Μαυρής, Γιώργος Ματθαίου, Χρίστος Κυριάκου Ταυτότητες: ,
Google's Google App Engine and Google's Datastore API Andreas Manoli.
Γλωσσική Τεχνολογία Εισαγωγικό Φροντιστήριο. Project του μαθήματος  Εργασία 2 ατόμων  Προφορική εξέταση για :  Project (80%)  Θεωρία (20%)  Στο φροντιστήριο.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Διασύνδεση Java Εφαρμογών με ΒΔ Π. Φιτσιλής 1.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα.
Applets Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη δυνατότητα προβολής γραφικών και τη δυνατότητα υλοποίησης ενός γραφικού.
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Android Μάριος Παπαχριστοδούλου Ελένη Σκιττίδου Σαββούλα Χρίστου ΕΠΛ371 Προγραμματισμός Συστημάτων.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Προγραμματισμός με GTK ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ «ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ» ΑΛΕΞΑΝΔΡΟΣ Κ. ΓΙΔΑΡΑΚΟΣ
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
Applets Εκτελούνται από τον appletviewer και από Java enabled web browsers Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Υλοποίηση εφαρμογών σε προγραμματιστικά περιβάλλοντα Κεφάλαιο 7.
Πληροφορική 2 Γλώσσες Προγραμματισμού 1. Γλώσσες προγραμματσιμού  Επιτρέπουν την κωδικοποίηση των αλγορίθμων  Η εκτέλεση ενός προγράμματος θα πρέπει.
Κατανεμημένα Συστήματα
Θερινό Σχολείο, 14 – 20 Ιουλίου 2014
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Java DataBase Connectivity
Κλάσεις και αντικείμενα
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στη Java (Μέρος Α’)
Εξαιρέσεις [Exceptions]
Μεταγράφημα παρουσίασης:

QT Toolkit Ελένη Σκιττίδου Μάριος Παπαχριστοδούλου Σαββούλα Χρίστου ΕΠΛ371 Προγραμματισμός Συστημάτων

Περίγραμμα Ιστορική Αναδρομή Πλεονεκτήματα-Μειονεκτήματα Εγκατάσταση Παρουσίαση Δυνατοτήτων Μέσω Παραδειγμάτων Συμπεράσματα Υλοποίησης του Προγράμματος Επίδειξης Συμπεράσματα Βιβλιογραφία

Ιστορική Αναδρομή 1991: – O Havaard Nord και ο Eirik Chambe-Eng αρχίζουν την δημιουργία της Qt (προφέρεται “cute”). Το όνομα της βγήκε γιατί στον Havaard άρεσε το πως φαινόταν το γράμμα Q στον emacs του, και το t βγήκε από το Xt, που είναι τα αρχικά του X toolkit. – Αρχικά υποστήριζε μόνο Windows και Linux. Για να μεταφερθεί όμως open source κώδικας από την Qt των Linux στην αντίστοιχη των Windows έπρεπε να αγοραστεί το proprietary licence. 2001: – Δημιουργείται το Qt 3.0, το οποίο υποστηρίζει και Mac OS X, και πάλι όμως με proprietary licence το οποίο έπρεπε να αγοραστεί : – Δημιουργείται το Qt 3.2, το οποίο υποστηρίζει πλέον δωρεάν τα Mac OS X : – Η Nokia εξαγοράζει την εταιρεία των Nord και Chambe-Eng και την μετονομάζει σε Qt development Frameworks. Από τότε και μέχρι σήμερα, χρησιμοποιείται ως η κύρια πλατφόρμα ανάπτυξης λογισμικού για όλες τις συσκευές τους.

Πλεονεκτήματα Platform independent Δουλεύει και σε κινητές συσκευές ( Android σε πειραματικό στάδιο) Υποστηρίζει GUI και κάνει πολύ γρήγορο Rendering Ευρύ documentation (ενσωματωμένο στο QT framework) Open source και free

Μειονεκτήματα Δεν είναι garbage-collected γι αυτό πρέπει ο προγραμματιστής να κάνει σωστή διαχείριση της μνήμης Υπάρχει bug στην δημιουργία των makefiles. Χωρίς το Qt-creator είναι πολύ δύσκολη η χρήση της Qt.

Εγκατάσταση QT toolkit Download the Qt SDK from: (ανάλογα με το λειτουργικό σύστημα στο οποίο δουλεύετε) Για windows τρέχω το.exe, ενώ για Linux εκτελώ το.bin από την κονσόλα. Ακολουθώ τις οδηγίες που εμφανίζονται στην οθόνη.

Εγκατάσταση Android Lighthouse Κατεβάστε το αρχείο.tar.lzma από εδώ: Κατεβάστε το SDK της Android για Linux από εδώ: Ακολουθήστε τις οδηγίες από: lighthouse/wiki/Compilehttp://code.google.com/p/android- lighthouse/wiki/Compile Σημείωση: Το πρόγραμμα είναι σε πειραματικό στάδιο, αναπτύσσεται μόνο από 1 άτομο, τον Bogdan Vatra από προσωπικό ενδιαφέρον. Υπάρχει μόνο για Linux. Οι οδηγίες είναι κάπως ασαφείς και πιθανό να χρειαστείτε πολύ περισσότερα από αυτά που περιγράφονται, όπως π.χ. προσθήκη επιπλέον βιβλιοθηκών κλπ.

Hello World #include int main(int argc, char *argv[]) { QApplication app(argc,argv); QLabel label("Hello World!"); label.show(); return app.exec(); }

Hello World - Compilation Compile Run Result

Παρουσίαση Δυνατοτήτων Μέσω Παραδειγμάτων GUI

Παρουσίαση Δυνατοτήτων Μέσω Παραδειγμάτων Graphics #include #include #include QGraphicsScene scene; // Δηλώνει μια μεταβλητή για την σκηνή scene.setSceneRect(-300, -300, 600, 600); // Ορίζει το μέγεθος της σκηνής for (int i = 0; i < MouseCount; ++i) { // Βάζει ποντίκια στην λίστα Mouse *mouse = new Mouse; // Δηλώνει νέα ποντίκια mouse->setPos(::sin((i * 6.28) / Mouse Num )*200, ::cos((i * 6.28) / MouseNum) * 200); scene.addItem(mouse); // Βάζει τα ποντίκια στην σκηνή για να } // γίνουν render QGraphicsView view(&scene); view.setRenderHint(QPainter::Antialiasing); // Δηλώνει οτι θα έχει antialiasing view.setBackgroundBrush(QPixmap(":/images/cheese.jpg")); // Βάζει εικόνα για background view.setWindowTitle(QT_TRANSLATE_NOOP(QGraphicsView, "Colliding Mice")); view.resize(400, 300); view.show(); // Κάνει render την σκηνή

Παρουσίαση Δυνατοτήτων Μέσω Παραδειγμάτων void Mouse::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) { // Body painter->setBrush(color);//Βάζει χρώμα στο brush painter->drawEllipse(-10, -20, 20, 40);//Σχεδιάζει μια έλλειψη } QRectF Mouse::boundingRect() const//Συνάρτηση για boundingBox { qreal adjust = 0.5; return QRectF(-18 - adjust, adjust, 36 + adjust, 60 + adjust); } void Mouse::advance(int step)//Υπάρχουν συναρτήσεις για { setRotation(rotation() + dx);//rotation του αντικειμένου setPos(mapToParent(0, -(3 + sin(speed) * 3)));//και γιααλλαγή θέσης }

Παρουσίαση Δυνατοτήτων Μέσω Παραδειγμάτων

SQL-Cached Table Example #include QSqlTableModel *model; – Η κλάση QSqlTableModel χρησιμοποιείται για να εμφανίζονται τα δεδομένα όπως στο QTableView και για να τα εμφανίζει σε μορφή που μπορείς να κάνεις αλλαγές στα database records από ένα μόνο table. model = new QSqlTableModel(this); model->setEditStrategy(QSqlTableModel::OnManualSubmit); model->select(); – Δημιουργούμε το data model και θέτουμε το SQL database table που θέλουμε το μοντέλο που θα δουλέψουμε πάνω του. – Το edit strategy μας υπαγορεύει αν οι αλλαγές που έγιναν από τον χρήστη στον πίνακα που βλέπουμε έχουν γίνει και στο database.

Παρουσίαση Δυνατοτήτων Μέσω Παραδειγμάτων Connecting to a Database QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName(":memory:"); QSqlQuery query; query.exec("create table person (id int primary key, " "firstname varchar(20), lastname varchar(20))"); query.exec("insert into person values(101, 'Danny', 'Young')"); model->database().transaction(); model->database().commit(); model->database().rollback(); – Ξεκινούμε συναλλαγή (transaction ) με το database χρησιμοποιώντας την συνάρτηση QSqlDatabase::transaction(). Το database transaction είναι μία μονάδα αλληλεπίδρασης με το database management που αντιμετωπίζεται με συνεπή και αξιόπιστο τρόπο, ανεξάρτητο από άλλες συναλλαγές. – Με το commit() αποθηκεύουμε όλες τις αλλαγές στο database. Ενώ με το rollback() επαναφέρουμε την προηγούμενη κατάσταση του database, πριν τις αλλαγές.

Παρουσίαση Δυνατοτήτων Μέσω Παραδειγμάτων

Sockets #include void FortuneThread::run() { QString serverName = hostName; quint16 serverPort = port; //Δηλώνει ένα port while (!quit) { const int Timeout = 5 * 1000; QTcpSocket socket; //Δηλώνει το socket socket.connectToHost(serverName, serverPort); If (!socket.waitForConnected(Timeout)) { //To socket περιμένει νέα σύνδεση emit error(socket.error(), socket.errorString()); //Αν κάνει timeout στέλνει return; } // μήνυμα λάθους και τερματίζει while (socket.bytesAvailable() < (int)sizeof(quint16)) { if (!socket.waitForReadyRead(Timeout)) { emit error(socket.error(), socket.errorString()); return; } }

Παρουσίαση Δυνατοτήτων Μέσω Παραδειγμάτων Threads #include //for thread functions #include //for the use of mutexes #include //for synchronising threads //To execute it create an instance of MyThread and call the start() method. class MyThread : public QThread { protected: void run(); }; void MyThread::run() //implement the code that you want the thread to run { QMutex mutex; QWaitCondition condition; mutex.lock(); //use of mutexes condition.wait(&mutex); count ++; mutex.unlock(); condition.wakeAll(); //wakes all the threads that are in a wait state }

Παρουσίαση Δυνατοτήτων Μέσω Παραδειγμάτων Επικοινωνία μεταξύ νημάτων - Σήματα bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection ) Σημείωση: για να προσδιοριστεί το σήμα και η μέθοδος επιστροφής χρησιμοποιούνται οι μέθοδοι SIGNAL() και SLOT() αντίστοιχα. Π.χ. Υλοποίηση του Mandelbrot με χρήση ενός worker thread για καλύτερο responsiveness του προγράμματος: connect(&thread, SIGNAL(renderedImage(QImage,double)), this, SLOT(updatePixmap(QImage,double)));

Παρουσίαση Δυνατοτήτων Μέσω Παραδειγμάτων

Συμπεράσματα Υλοποίησης του Προγράμματος Επίδειξης Μας ζητήθηκε να υλοποιήσουμε ένα GUI πρόγραμμα, που θα αναπαριστά ένα λεξικό το οποίο θα διαβάζει τις λέξεις του από ένα αρχείο και θα αναζητά μία λέξη που θα του δίνει ο χρήστης.

Συμπεράσματα Υλοποίησης του Προγράμματος Επίδειξης Δήλωση και δημιουργία των αντικειμένων που υπάρχουν στη φόρμα: QPushButton *ui_findButton; //the find button QTextEdit *ui_textEdit; //the textbox containing the lexicon QLineEdit *ui_lineEdit; //the textbox containing the search word bool isFirstTime; //to check if the word was found more than once ui_findButton = qFindChild (this, "findButton"); ui_textEdit = qFindChild (this, "textEdit"); ui_lineEdit = qFindChild (this, "lineEdit");

Συμπεράσματα Υλοποίησης του Προγράμματος Επίδειξης void TextFinder::loadTextFile() { QFile inputFile(":/forms/input.txt"); //where to get the lexicon from inputFile.open(QIODevice::ReadOnly); QTextStream in(&inputFile); QString line = in.readAll(); //copy the lexicon in the line string inputFile.close(); //fill the textbox with the contents of line string (i.e. the lexicon) ui_textEdit->append(line); ui_textEdit->setUndoRedoEnabled(false); ui_textEdit->setUndoRedoEnabled(true); }

Συμπεράσματα Υλοποίησης του Προγράμματος Επίδειξης cursor.beginEditBlock(); //set the highlight preferences QTextCharFormat plainFormat(highlightCursor.charFormat()); QTextCharFormat colorFormat = plainFormat; colorFormat.setForeground(Qt::red); //find the search word in the lexicon while (!highlightCursor.isNull() && !highlightCursor.atEnd()) { highlightCursor = document->find(searchString, highlightCursor, QTextDocument::FindWholeWords); // highlight the word as defined above if (!highlightCursor.isNull()) { found = true; highlightCursor.movePosition(QTextCursor::WordRight, QTextCursor::KeepAnchor); highlightCursor.mergeCharFormat(colorFormat); } } cursor.endEditBlock();

Συμπεράσματα Υλοποίησης του Προγράμματος Επίδειξης

Ευκολίες που αντιμετωπίσαμε: Γρήγορη ανάπτυξη του κώδικα μας με την δημιουργία της φόρμας γραφικά (αρκετός από τον κώδικα δημιουργήθηκε αυτόματα με την προσθήκη των αντικειμένων). Το μεγάλο εύρος των tutorials και των help functions μας βοήθησε στο να εντοπίσουμε τις βιβλιοθήκες που χρειαζόμασταν. Η αντικειμενοστρέφεια έκανε τον κώδικα μας πολύ πιο απλό στον χειρισμό events.

Συμπεράσματα Υλοποίησης του Προγράμματος Επίδειξης Δυσκολίες που αντιμετωπίσαμε: Δοκιμάσαμε ανεπιτυχώς να μεταφέρουμε τον κώδικα μας για να εκτελεστεί και σε android, η διαδικασία όμως είναι υπερβολικά πολύπλοκη και αναξιόπιστη (πρέπει να δημιουργηθεί Java file το οποίο να κάνει import τον κώδικα μας και ακολούθως να γίνει ξανά installed στον emulator, προβλήματα συμβατότητας java / Qt ). Δυσκολία στο να μεταγλωττίσουμε το πρόγραμμα μας μέσω κονσόλας λόγω γνωστού bug της εντολής qmake η οποία δημιουργεί λάθος συνδέσμους με τις βιβλιοθήκες στο makefile.

Συμπεράσματα Εύχρηστη φορητή γλώσσα, ανεξάρτητη πλατφόρμας, πειραματικά και σε κινητές συσκευές (ported στην android, προοπτικές εξέλιξης). Καλό documentation επιτρέπει την γρήγορη εκμάθηση της. Ιδιαίτερα χρήσιμη και εύκολη σε εφαρμογές που απαιτούν GUI ή γρήγορο rendering σε γραφικό περιβάλλον.

Βιβλιογραφία Documentation μέσα στο toolkit.

ΤΕΛΟΣ ΕΥΧΑΡΙΣΤΟΥΜΕ ΓΙΑ ΤΗΝ ΠΡΟΣΟΧΗ ΣΑΣ! ΑΠΟΡΙΕΣ?