Εγκατάσταση και ρύθμιση παραμέτρων του Qt Creator. Γιατί λατρεύω το Qt και θα πρέπει να το λατρέψετε και εσείς ο προγραμματισμός Qt για αρχάριους

Ένα απλό παράδειγμα για χειροκίνητη συναρμολόγηση

Για καλύτερη κατανόηση του Qt, θα ήταν σωστό να δημιουργήσετε χειροκίνητα τουλάχιστον ένα απλό παράδειγμα στην κονσόλα. Η τεχνική συναρμολόγησης είναι η ίδια για έργα οποιουδήποτε μεγέθους και είναι σημαντικό να κατανοήσουμε πώς γίνεται.

Ας δούμε ένα απλό παράδειγμα εφαρμογής GUI που ανοίγει ένα κενό παράθυρο στην οθόνη. Επιλέξτε έναν κατάλογο στο δίσκο όπου θα δημιουργήσουμε το αρχείο κύρια.cppμε το ακόλουθο περιεχόμενο. Η αρίθμηση γραμμών προστέθηκε στο παράδειγμα για να απλοποιηθούν περαιτέρω σχόλια στο παράδειγμα. Πρέπει να γίνει κατανοητό ότι η αρίθμηση γραμμών δεν πρέπει να περιλαμβάνεται στο αρχείο εργασίας, καθώς δεν αποτελεί μέρος της έγκυρης σύνταξης έκφρασης C++.

01. #περιλαμβάνω 02. #περιλαμβάνω 03. 04. int main(int argc, char *argv) 05. ( 06. QApplication app(argc, argv); 07. QWidget wgt; 08. wgt.setWindowTitle(tr("Hello world")); 09. 10 . wgt.show();

Οι γραμμές 01 και 02 περιλαμβάνουν αρχεία κεφαλίδας Εφαρμογή QΚαι QWidget, που μεταξύ άλλων περιέχει δηλώσεις τάξης Εφαρμογή QΚαι QWidget. Στο παράδειγμά μας, δημιουργούμε περιπτώσεις αυτών των κλάσεων.

Αξίζει να σημειωθεί η βολική παράδοση της ονομασίας αρχείων κεφαλίδας που χρησιμοποιούνται στο Qt. Από την έκδοση 4 του Qt, αν χρειαζόσασταν μια κλάση με όνομα Qxxx, τότε πιθανότατα ο ορισμός του βρίσκεται στο αρχείο κεφαλίδας Qxxx.

Σε αυτό το παράδειγμα, η τάξη Εφαρμογή QΜας ενδιαφέρει ως διοργανωτής του κύκλου συλλογής μηνυμάτων που θα φτάνουν στο παράθυρο της εφαρμογής GUI μας. Δείτε τη γραμμή 11 (έναρξη του βρόχου μηνυμάτων παραθύρου). Τάξη Εφαρμογή Qυλοποιείται με την ομοιότητα ενός Singleton. Για όσους δεν είναι εξοικειωμένοι με αυτόν τον όρο από τη θεωρία των μοτίβων σχεδίασης (ή, μοτίβων, από τα αγγλικά. μοτίβα) ας δώσουμε μια μικρή εξήγηση. Η ουσία ενός singleton είναι ότι η υλοποίηση μιας κλάσης αποτρέπει τη δυνατότητα δημιουργίας περισσότερων από ένα στιγμιότυπων μιας δεδομένης κλάσης. Αυτό το χαρακτηριστικό είναι σημαντικό για εμάς γιατί υπονοεί τη δυνατότητα ορισμού μιας καθολικής μεταβλητής μέσα στη βιβλιοθήκη Qt με έναν δείκτη σε μια μεμονωμένη παρουσία μιας δεδομένης κλάσης. Δείτε την περιγραφή για το σύμβολο qAppστη βοήθεια του Qt.

Η βιβλιοθήκη Qt χρησιμοποιεί ορολογία widget. widget- contraption, συσκευή) ως στοιχείο της διεπαφής GUI. Το ελάχιστο κοινό σύνολο ιδιοτήτων τέτοιων στοιχείων αντιπροσωπεύεται από την κλάση QWidget.

Οι γραμμές 06 και 07 δημιουργούν τα αντικείμενα κλάσης εφαρμογής και γραφικών στοιχείων. Και στις δύο περιπτώσεις, τα αντικείμενα δημιουργούνται στατικά. Η διάρκεια ζωής τέτοιων αντικειμένων περιορίζεται από το μπλοκ δηλώσεων (...) στο οποίο δημιουργήθηκαν. Μόλις η εκτέλεση του κώδικα προγράμματος φτάσει στην αγκύλη κλεισίματος, και τα δύο αυτά αντικείμενα καταστρέφονται αυτόματα. Έτσι, σε αυτό το παράδειγμα δεν θα σκεφτούμε πώς να καταστρέψουμε αντικείμενα Qt και θα εξετάσουμε αυτό το ζήτημα αργότερα.

Κατά τη δημιουργία ενός αντικειμένου Εφαρμογή Qχρησιμοποιείται ένας παραμετροποιημένος κατασκευαστής στον οποίο μεταβιβάζονται τα ορίσματα εκκίνησης της εφαρμογής (αντιγράφονται από τα ορίσματα της συνάρτησης main(). Μέσα στο αντικείμενο κλάσης, αυτά τα ορίσματα αναλύονται. Η κλάση εφαρμογής υποστηρίζει έναν αριθμό παραμέτρων εκκίνησης, οι οποίες μπορούν να βρεθούν στη βοήθεια για τον αντίστοιχο κατασκευαστή Εφαρμογή Q. Οι παράμετροι εκκίνησης που δεν περιλαμβάνονται σε αυτήν τη λίστα θα πρέπει να αναλύονται ανεξάρτητα. Στο τέλος αυτού του μαθήματος, έχοντας τοποθετήσει πολλά στοιχεία ελέγχου στο κύριο παράθυρο της εφαρμογής, θα προτείνουμε να πειραματιστείτε με την παράμετρο εκκίνησης -style, για την οποία, σε οποιαδήποτε έκδοση Qt, είναι δυνατές οι ακόλουθες τιμές: μοτίβο, παράθυρα, πλατίνα.

Η γραμμή 08 αλλάζει ένα από τα χαρακτηριστικά του αντικειμένου widget. Χρησιμοποιώντας τη μέθοδο setWindowTitle(), ορίσαμε το δικό μας κείμενο για τον τίτλο του μελλοντικού μας παραθύρου. Σημειώστε ότι η εικόνα συμβολοσειράς είναι τυλιγμένη σε μια κλήση στη συνάρτηση μετάφρασης tr(). Αυτή είναι μια απαίτηση για τη διεθνοποίηση της εφαρμογής. Για όλα αυτά τα περιτυλίγματα, μπορούν να χρησιμοποιηθούν ειδικά εργαλεία Qt για τη δημιουργία ειδικών αρχείων με μεταφράσεις σε διαφορετικές γλώσσες, τα οποία μπορούν να χρησιμοποιηθούν στην εφαρμογή για την εκτέλεση αυτόματων αντικαταστάσεων. Συνήθως, τέτοια αρχεία περιλαμβάνονται στην έκδοση της εφαρμογής ως πόροι.

Η γραμμή 10 ανοίγει το παράθυρο της εφαρμογής. Πριν από το Qt4, πριν ανοίξει ένα παράθυρο, το widget είχε δηλωθεί ρητά ως το κύριο widget της εφαρμογής. Αυτό έγινε χρησιμοποιώντας τον παρακάτω κώδικα.

App.setMainWidget(&wgt);

Ξεκινώντας από το Qt4, μια τέτοια επικοινωνία εκτελείται αυτόματα με πρόσβαση στον καθολικό δείκτη qAppσε ένα στιγμιότυπο της κλάσης εφαρμογής.

Η γραμμή 11 ξεκινά τον βρόχο επεξεργασίας μηνυμάτων του λειτουργικού συστήματος που κατευθύνεται στο παράθυρο της εφαρμογής. Ο βρόχος τελειώνει όταν εκτελείται οποιαδήποτε από τις εντολές κλεισίματος της εφαρμογής. Ο κωδικός εξόδου της εφαρμογής επιστρέφεται από την exec() όταν η μέθοδος βγαίνει. Είναι αυτός ο κωδικός που γίνεται ο κωδικός επιστροφής της συνάρτησης main() περνώντας την από τον τελεστή απόδοση.

Τώρα ας προσπαθήσουμε να δημιουργήσουμε την εφαρμογή. Ο ευκολότερος τρόπος για να το κάνετε αυτό είναι στο Linux. Για να το κάνετε αυτό, χρειάζεται απλώς να ανοίξετε την κονσόλα και να εκτελέσετε κάποιες εντολές, τις οποίες θα περιγράψουμε τώρα. Για τα Windows, μια τέτοια εργασία μπορεί να απαιτεί τον ορισμό διαδρομών στον κατάλογο όπου βρίσκεται το βοηθητικό πρόγραμμα qmake από το Qt SDK. Αυτό το βοηθητικό πρόγραμμα εφαρμόζει τους κανόνες του συστήματος κατασκευής έργου QMake.

Πρώτα πρέπει να μάθουμε τι είναι διαθέσιμο σε εμάς από την κονσόλα. Αν βρισκόμαστε στην κονσόλα bash (*nix), τότε αυτό είναι πολύ απλό. Πληκτρολογήστε την εντολή qmakeκαι πατήστε tab δύο φορές. Θα πρέπει να δούμε μια λίστα με όλες τις εντολές που ξεκινούν με τον συνδυασμό qmake. Για παράδειγμα, στην περίπτωσή μου βλέπω δύο εντολές: qmakeΚαι qmake-qt4. Αυτό σημαίνει ότι έχω εγκαταστήσει δύο εκδόσεις της βιβλιοθήκης από το αποθετήριο. Ομάδα qmakeαντιστοιχεί στην έκδοση Qt5 (η προεπιλογή είναι για την πιο πρόσφατη έκδοση) και την εντολή qmake-qt4αντιστοιχεί αναλόγως στο Qt4. Τώρα, ανάλογα με την εντολή που χρησιμοποιώ, είτε θα δημιουργήσω χρησιμοποιώντας την έκδοση Qt5 είτε χρησιμοποιώντας την έκδοση Qt4.

Εάν όλα στο σύστημά μας έχουν ρυθμιστεί κανονικά και οι εκδόσεις του Qt SDK είναι επιτυχείς, τότε το έργο θα πρέπει να κατασκευαστεί χρησιμοποιώντας τις ακόλουθες τρεις εντολές.

$ qmake -project $ qmake $ κάνει

Η πρώτη εντολή θα δημιουργήσει ένα αρχείο έργου. Το αρχείο του έργου έχει το επίθημα .pro. Στο πλαίσιο των Windows, θα ήταν σωστό να πούμε "επέκταση υπέρΈννοιες επίθημα ονόματος αρχείουΚαι επέκταση αρχείουσημαίνει εντελώς διαφορετικά πράγματα, αν και φαίνονται παρόμοια. Φροντίστε να το χρησιμοποιήσετε σωστά.

Η δεύτερη εντολή θα πρέπει να δημιουργήσει ένα αρχείο σεναρίου μεταγλώττισης - Makefile. Η τρίτη εντολή θα πρέπει να εκτελέσει ένα σενάριο μεταγλώττισης που θα πρέπει να παράγει ένα εκτελέσιμο αρχείο εφαρμογής.

Εάν αυτό δεν συμβεί, τότε θα προσπαθήσουμε να βρούμε το πρόβλημα.

Ανοίξτε το αρχείο του έργου. Προσπαθήστε να βρείτε την παρακάτω γραμμή εκεί.

QT += gui

Εάν δεν υπάρχει τέτοια γραμμή, τότε θα πρέπει να την προσθέσετε, διαφορετικά, ανάλογα με την έκδοση SDK, το έργο μπορεί να γίνει αντιληπτό ως έργο κονσόλας και οι διαδρομές προς τα αρχεία κεφαλίδας κλάσης GUI δεν θα περιλαμβάνονται σε αυτό. Αυτό θα έχει ως αποτέλεσμα σφάλματα μεταγλώττισης που δηλώνουν ότι τα περιλαμβανόμενα αρχεία κεφαλίδας δεν βρέθηκαν.

Λάβετε υπόψη ότι εάν έχετε να κάνετε με Qt SDK έκδοση 5, τότε αυτός ο ορισμός πρέπει να περιλαμβάνει και την ομάδα widgetsόπως φαίνεται παρακάτω.

QT += γραφικά στοιχεία gui

Ένα παράδειγμα δημιουργίας προτύπου εφαρμογής GUI από το QtCreator

Ανοίξτε το QtCreator. Για να δημιουργήσετε ένα νέο έργο, ξεκινήστε τον οδηγό δημιουργίας έργου από το μενού "Αρχείο->Νέο αρχείο ή Έργο...". Στο παράθυρο που ανοίγει στην πρώτη σελίδα του οδηγού, θα σας ζητηθεί να επιλέξετε ένα πρότυπο για το μελλοντικό έργο. Για την ομάδα έργου "Εφαρμογή", επιλέξτε την επιλογή "Qt GUI Application" και κάντε κλικ στο κουμπί "Επιλογή" για να μεταβείτε στην επόμενη σελίδα του οδηγού.

Στη δεύτερη σελίδα του οδηγού δημιουργίας έργου, σας ζητείται να επιλέξετε ένα όνομα έργου και τον κατάλογο τοποθεσίας του. Χρησιμοποιώντας το καθορισμένο όνομα έργου, θα δημιουργηθεί ένας υποκατάλογος στον οποίο θα βρίσκονται τα αρχεία του έργου. Ο υποκατάλογος θα δημιουργηθεί στον καθορισμένο κατάλογο τοποθέτησης. Έτσι, το όνομα του έργου πρέπει να καθορίζεται από τους κανόνες που πρέπει να υπακούει το όνομα του καταλόγου. Ωστόσο, για να αποφύγετε προβλήματα, μην χρησιμοποιείτε ρωσικά γράμματα και κενά. Χρησιμοποιήστε αγγλικά γράμματα, αριθμούς και κάτω παύλες και παύλες (σύμβολο μείον). Ας ονομαστεί το έργο μας app1. Ας το γράψουμε στη γραμμή όνομα, και στη γραμμή για την επιλογή του καταλόγου έργου θα υποδείξουμε τον κατάλογο όπου θα συνεχίσουμε να δημιουργούμε έργα στο Qt. Θα πρέπει να αποφεύγονται μονοπάτια με ρωσικά γράμματα και κενά. Αργά ή γρήγορα, μπορεί να προκαλέσουν προβλήματα. Εάν πρέπει να θυμάστε αυτήν τη διαδρομή για την επόμενη φορά, επιλέξτε το πλαίσιο ελέγχου "Χρήση ως προεπιλεγμένη τοποθεσία έργου". Κάντε κλικ στο κουμπί "Επόμενο" για να μεταβείτε στην επόμενη σελίδα του οδηγού.

Στην τρίτη σελίδα του οδηγού δημιουργίας έργου, σας ζητείται να επιλέξετε ένα Qt SDK από τη λίστα με αυτά που βρέθηκαν και έχουν εγγραφεί στο QtCreator. Επιλέξτε την επιλογή Qt4. Για την επιλεγμένη έκδοση SDK, πρέπει να ορίσετε προφίλ κατασκευής έργου. Οι επιλογές "Release" και "Debug" προσφέρονται Η έκδοση "Release" δεν περιέχει σύμβολα εντοπισμού σφαλμάτων στο εκτελέσιμο αρχείο και συνιστάται για μεταφορά σε πραγματική χρήση. Σε όλες τις άλλες περιπτώσεις, είναι πιο βολικό να χρησιμοποιήσετε το build "Debug". Στο τρέχον παράδειγμα, η επιλογή της συναρμολόγησης δεν έχει σημασία. Μπορείτε να αφήσετε και τα δύο προφίλ ενεργοποιημένα. Στα δεξιά του ονόματος προφίλ υπάρχει ένα πεδίο εισαγωγής στο οποίο αναγράφεται η διαδρομή κατά την οποία θα πραγματοποιηθεί η αντίστοιχη συναρμολόγηση. Συχνά αυτά τα μονοπάτια επεξεργάζονται με βάση διαφορετικές παραδόσεις. Στο παράδειγμά μας, μπορούμε να αφήσουμε αυτά τα μονοπάτια αμετάβλητα. Κάντε κλικ στο κουμπί "Επόμενο" για να μεταβείτε στην επόμενη σελίδα του οδηγού.

Στην τέταρτη σελίδα του οδηγού δημιουργίας έργου, σας ζητείται να επιλέξετε το όνομα της κλάσης για την κύρια μορφή του έργου, τη βασική κλάση από την οποία θα πρέπει να κληρονομηθεί η κύρια μορφή του έργου και τα ονόματα των αρχείων όπου η διεπαφή και θα εντοπιστεί η υλοποίηση της δημιουργημένης κλάσης της κύριας φόρμας. Επιπλέον, η σελίδα πρέπει να υποδεικνύει εάν θα χρησιμοποιηθεί οπτική σχεδίαση φόρμας. Δεδομένου ότι δεν θα χρησιμοποιήσουμε οπτικό σχεδιασμό, θα πρέπει να βεβαιωθούμε ότι το πλαίσιο ελέγχου "Δημιουργία φόρμας" δεν είναι επιλεγμένο.

Το πιο ενδιαφέρον πράγμα στην τέταρτη σελίδα του New Project Wizard είναι η επιλογή μιας βασικής κλάσης για τη δημιουργία μιας κλάσης φόρμας. Προσφέρονται τρεις επιλογές.

  1. QMainWindow- στις περισσότερες περιπτώσεις, η πιο κατάλληλη επιλογή. Με κληρονομιά από αυτήν την κλάση, έχουμε έτοιμα εργαλεία για την τοποθέτηση μενού, γραμμής κατάστασης και κεντρικού πεδίου, τα οποία μπορούν να υλοποιηθούν τόσο σε στυλ SDI (Single Document Interface) όσο και σε στυλ MDI (Multi Document Interface).
  2. QWidget— αυτή η κλάση είναι το απλούστερο γραφικό στοιχείο. Στην ορολογία του Qt, αυτό είναι το απλούστερο στοιχείο με το οποίο συσχετίζεται κάποιο είδος γραφικής περιοχής στην οθόνη. Ως βασική κλάση για το κύριο παράθυρο, χρησιμοποιείται, κατά κανόνα, κατά τη δημιουργία απλών εφαρμογών μιας μορφής και είναι εξαιρετικό για αρχικούς «φοιτητικούς» σκοπούς λόγω του γεγονότος ότι δεν περιέχει τίποτα «περιττό».
  3. QDialog— βασική κλάση για τη δημιουργία τροπικών πλαισίων διαλόγου.

Για το παράδειγμά μας, θα επιλέξουμε ως βασική κλάση, η απλούστερη επιλογή είναι QWidget. Τα ονόματα για την κύρια κλάση της φόρμας και για τα αρχεία όπου θα βρίσκεται η διεπαφή και η υλοποίησή της μπορούν να παραμείνουν ως προεπιλεγμένες τιμές. Κάντε κλικ στο κουμπί "Επόμενο" για να μεταβείτε στην επόμενη σελίδα του οδηγού.

Η πέμπτη σελίδα του οδηγού δημιουργίας έργου σάς επιτρέπει να προσδιορίσετε τη σχέση του έργου που δημιουργείται με ήδη ανοιχτά έργα και να καθορίσετε την επιλογή οποιουδήποτε διαθέσιμου συστήματος ελέγχου έκδοσης έργου. Στο τρέχον παράδειγμα, δεν μας ενδιαφέρουν αυτές οι δυνατότητες, επομένως θα πρέπει να ολοκληρώσουμε τον οδηγό κάνοντας κλικ στο κουμπί "Τέλος".

Τα βήματα για τη δημιουργία ενός έργου μπορεί να διαφέρουν ελαφρώς σε διαφορετικές εκδόσεις του QtCreator, αλλά ουσιαστικά, εδώ είναι τα κύρια σημεία που πρέπει να κατανοήσετε κατά τη δημιουργία ενός έργου GUI. Η τρέχουσα περιγραφή έγινε με βάση την έκδοση 2.7.0 του QtCreator.

Μετά την ολοκλήρωση του New Project Wizard στο QtCreator, θα ανοίξει μια προβολή με το έργο που δημιουργήθηκε. Εκτελέστε το έργο για να ελέγξετε τις ρυθμίσεις του περιβάλλοντος ανάπτυξης. Εάν όλα είναι εντάξει, τότε το δημιουργημένο πρότυπο έργου θα πρέπει να μεταγλωττιστεί και να εκτελεστεί. Για να ξεκινήσετε κανονικά ένα έργο, μπορείτε να κάνετε κλικ στο κουμπί με ένα πράσινο τρίγωνο που βρίσκεται στη γραμμή εργαλείων. Το κουμπί με την εικόνα ενός πράσινου τριγώνου με ένα σκαθάρι εκτελεί τις λειτουργίες εκκίνησης της λειτουργίας εντοπισμού σφαλμάτων. Σε αυτήν την περίπτωση, εάν οριστούν σημεία διακοπής στο έργο, τότε όταν φτάσουμε σε αυτά, η εκτέλεση της εφαρμογής που εκτελείται θα σταματήσει και η γραμμή στην οποία έγινε η διακοπή θα επισημανθεί στον επεξεργαστή εντοπισμού σφαλμάτων.

Το QtCreator είναι αισθητά διαφορετικό στο σχεδιασμό από άλλα περιβάλλοντα ανάπτυξης. Ωστόσο, ο σχεδιασμός του είναι εκπληκτικά εργονομικός. Μεταξύ άλλων, στην εποχή των ευρειών οθονών, η γραμμή εργαλείων που βρίσκεται στα αριστερά στο κεντρικό παράθυρο του περιβάλλοντος ανάπτυξης φαίνεται πολύ συμφέρουσα. Στο κάτω μέρος της γραμμής εργαλείων, όπως ήδη αναφέρθηκε, υπάρχουν κουμπιά για την εκκίνηση της εφαρμογής και στο επάνω μέρος υπάρχουν κουμπιά για την επιλογή καρτελών για το κύριο παράθυρο του περιβάλλοντος ανάπτυξης. Ας δούμε τη λίστα με τις κύριες καρτέλες.

  • "Καλώς ήρθατε" — Επιλογή έργου
  • "Επεξεργασία" — Επεξεργασία του προγράμματος.
  • "Εντοπισμός σφαλμάτων" - Εντοπισμός σφαλμάτων έργου. Περιλαμβάνει τα απαραίτητα παράθυρα για την παρακολούθηση αντικειμένων.
  • "Έργα" — Ρυθμίσεις για έργα που φορτώνονται στο περιβάλλον ανάπτυξης. Θα πρέπει να μελετήσετε προσεκτικά τις επιλογές που παρουσιάζονται σε αυτήν την καρτέλα.
  • "Analyze" - Ανάλυση έργων με χρήση ειδικών εργαλείων για τον εντοπισμό σημείων συμφόρησης απόδοσης και προβλημάτων διαρροής μνήμης.
  • "Βοήθεια" Ενσωματωμένο παράθυρο βοήθειας. Ίσως προτιμάτε να εργάζεστε με την αυτόνομη εφαρμογή βοήθειας, το QtAssistant.

Ένα απλό παράδειγμα τοποθέτησης γραφικών στοιχείων σε ένα παράθυρο εφαρμογής

Ας πάρουμε το έργο που δημιουργήσαμε στην προηγούμενη ενότητα χρησιμοποιώντας τον οδηγό περιβάλλοντος ανάπτυξης QtCreator. Το έργο που δημιουργήθηκε περιλαμβάνει τα ακόλουθα αρχεία.

  • app1.pro- αρχείο έργου
  • κύρια.cpp widget.h και widget.cpp./li>
  • widget.h— διεπαφή της κύριας κλάσης παραθύρου εφαρμογής.
  • widget.cpp— υλοποίηση της κύριας κλάσης παραθύρου εφαρμογής.

Τα ονόματα αρχείων στο έργο σας μπορεί να είναι ελαφρώς διαφορετικά. Αυτό μπορεί να οφείλεται είτε στο ότι τις προσδιορίσατε ρητά αλλού κατά τη δημιουργία του έργου είτε οι προεπιλεγμένες τιμές για την έκδοση του QtCreator που διαθέτετε είναι διαφορετικές.

Ας ανοίξουμε το αρχείο υλοποίησης του κύριου παραθύρου της εφαρμογής - widget.cpp. Ας το αλλάξουμε στην κατάσταση που παρουσιάζεται στο παρακάτω παράδειγμα. Να θυμάστε ότι οι αριθμοί γραμμών παρέχονται μόνο για διευκόλυνση του σχολιασμού.

01. #περιλαμβάνω 02. #περιλαμβάνω 03. #περιλαμβάνω 04. 05. #include "widget.h" 06. 07. Widget::Widget(QWidget *parent) 08. : QWidget(parent) 09. ( 10. setWindowTitle(tr("Hello world!!!")); 11. setMinimumSize(200, 80). , 80, 24); ~Widget() 24. ( 25. 26. )

Οι γραμμές 01-03 περιλαμβάνουν αρχεία με τις διεπαφές των παρακάτω κατηγοριών γραφικών στοιχείων.

  1. QLabel— κατηγορία ετικέτας. Συχνά χρησιμοποιείται για την τοποθέτηση στατικών πληροφοριών κειμένου. Κατανοεί ορισμένες ετικέτες HTML για μορφοποίηση. Μπορεί να χρησιμοποιηθεί για τη στατική τοποθέτηση μιας εικόνας. Για παράδειγμα, από ένα αρχείο με μια εικόνα. Κληρονόμησε από QFrame, ώστε να μπορεί να προσαρμοστεί σε διαφορετικά σχήματα μπορντούρας (περιγράμματα).
  2. QLineEdit— μια κλάση για τη δημιουργία πεδίων εισαγωγής πληροφοριών κειμένου μιας γραμμής.
  3. Κουμπί QPush— κατηγορία κουμπιών. Τις περισσότερες φορές χρησιμοποιείται για επεξεργασία σήματος κλικ ()- κάντε κλικ στο κουμπί.

Σώμα κατασκευαστή τάξης Γραφικό στοιχείοπεριέχει δύο γραμμές για τη ρύθμιση των χαρακτηριστικών παραθύρου (γραμμές 10-11) και 8 γραμμές για τη δημιουργία και την τοποθέτηση τριών άλλων γραφικών στοιχείων στο πεδίο παραθύρου (γραμμές 13-20).

Η ρύθμιση των χαρακτηριστικών παραθύρου αποτελείται από την εντολή για να ορίσετε το όνομα του παραθύρου της εφαρμογής και το ελάχιστο μέγεθος του παραθύρου της εφαρμογής. Για να ορίσετε το ελάχιστο μέγεθος, χρησιμοποιείται μια μέθοδος που λαμβάνει το πλάτος και το ύψος του παραθύρου σε pixel.

Η γραμμή 13 περιέχει τη δημιουργία μιας παρουσίας της κλάσης QLabel. Ένα αντικείμενο δημιουργείται δυναμικά χρησιμοποιώντας τον νέο τελεστή. Για τη δημιουργία ενός αντικειμένου, χρησιμοποιείται ένας κατασκευαστής, η πρώτη παράμετρος του οποίου καθορίζει τη συμβολοσειρά που πρέπει να αντιπροσωπεύει το δημιουργημένο αντικείμενο. Η δεύτερη παράμετρος αυτού του κατασκευαστή θα πρέπει να καθορίσει τη διεύθυνση του αντικειμένου που θα γίνει ο κάτοχος του δημιουργημένου αντικειμένου ετικέτας. Η διεύθυνση του ιδιοκτήτη έχει οριστεί σε αυτό. Σύμφωνα με τους κανόνες της γλώσσας C++, αυτόείναι ένας δείκτης στο αντικείμενο μέσα στο οποίο χρησιμοποιείται. Δηλαδή, σε αυτό το πλαίσιο, είναι ένας δείκτης στο δημιουργημένο παράδειγμα της κλάσης Γραφικό στοιχείο. Έτσι, η γραμμή 13 δημιουργεί ένα αντικείμενο κλάσης ετικέτας που πρέπει να αντιπροσωπεύει το καθορισμένο κείμενο και του οποίου ο ιδιοκτήτης έχει εκχωρηθεί στο τρέχον αντικείμενο.

Τώρα ήρθε η ώρα να μιλήσουμε για αλυσίδες ιδιοκτησίας, οι οποίες υλοποιούνται στο σύστημα κλάσης Qt για να λύσουν το πρόβλημα της καταστροφής αντικειμένων για την αποφυγή τυχαίων διαρροών μνήμης. Θα πρέπει να θυμόμαστε ότι τα αντικείμενα που δημιουργούνται δυναμικά, π.χ. χρησιμοποιώντας τον χειριστή νέος, βρίσκονται σε μια ειδική περιοχή μνήμης που ονομάζεται σωρόςκαι τα οποία ζουν στο σωρό μέχρι να καταστραφούν ρητά από τον χειριστή διαγράφω. Εάν ο προγραμματιστής δεν παρακολουθεί την καταστροφή αντικειμένων που έχουν καταστεί περιττά και δεν καλεί τον χειριστή να τα καταστρέψει διαγράφω, τότε αυτό γίνεται η αιτία διαρροής μνήμης στην εφαρμογή, η οποία αποτελεί σοβαρό πρόβλημα για μια σειρά από γλώσσες προγραμματισμού, στις οποίες περιλαμβάνεται η γλώσσα C++.

Υπάρχουν αρκετά γνωστά σχήματα για την αυτόματη παρακολούθηση της καταστροφής αντικειμένων που δημιουργούνται δυναμικά. Ένας από αυτούς είναι η χρήση έξυπνων δεικτών, που θα πρέπει να συζητηθούν αργότερα. Ένας άλλος τρόπος είναι να δημιουργήσουμε αλυσίδες ιδιοκτησίας, τις οποίες θα συζητήσουμε τώρα. Ο τρίτος τρόπος είναι να δημιουργήσετε ένα υποσύστημα συλλογής σκουπιδιών, το οποίο θα πρέπει να παρακολουθεί τα περιττά αντικείμενα και να τα καταστρέφει. Η τελευταία μέθοδος, παραδοσιακή για τους πυρήνες πολλών σύγχρονων γλωσσών, πρακτικά δεν χρησιμοποιείται στη C++. Οι δύο πρώτες μέθοδοι είναι πολύ πιο δημοφιλείς στις παραδόσεις της γλώσσας C++.

Έτσι, οι αλυσίδες ιδιοκτησίας εφαρμόζουν την ακόλουθη απλή ιδέα. Δημιουργείται ένα αντικείμενο, την καταστροφή του οποίου αναλαμβάνουμε να παρακολουθούμε. Ο ευκολότερος τρόπος είναι να δημιουργήσετε ένα τέτοιο αντικείμενο με στατικό ορισμό και στη συνέχεια θα καταστραφεί αυτόματα όταν η εκτέλεση του προγράμματος φτάσει στο τέλος του μπλοκ δηλώσεων (...) στο οποίο ορίστηκε. Στη συνέχεια, κατά τη δυναμική δημιουργία άλλων αντικειμένων, θα τους εκχωρήσουμε αντικείμενα κατόχου. Οι ευθύνες των ιδιοκτητών θα περιλαμβάνουν την καταστροφή ιδιόκτητων αντικειμένων στο σώμα του δικού τους καταστροφέα. Θυμηθείτε ότι ο καταστροφέας είναι μια ειδική μέθοδος που καλείται όταν ένα αντικείμενο καταστρέφεται. Έτσι, είναι δυνατό να δημιουργηθεί μια τέτοια αλυσίδα ιδιοκτησίας σε σχέση με το πρώτο αντικείμενο, όλα τα στοιχεία της οποίας θα καταστραφούν αυτόματα όταν καταστραφεί το πρώτο αντικείμενο. Κατά την οργάνωση ενός τέτοιου σχήματος, χρειάζεται μόνο να λάβετε σωστά υπόψη τη διάρκεια ζωής ενός αντικειμένου που έχει οριστεί ως κάτοχος άλλου αντικειμένου, έτσι ώστε τα αντικείμενα να μην καταστραφούν πρόωρα.

Αυτό ακριβώς είναι το καθεστώς ιδιοκτησίας που εφαρμόζεται στο σύστημα κλάσης Qt. Όταν δημιουργείτε πολλές κλάσεις από αυτήν τη βιβλιοθήκη, μπορείτε να χρησιμοποιήσετε έναν κατασκευαστή του οποίου η μόνη ή η τελευταία παράμετρος παίρνει έναν δείκτη σε ένα αντικείμενο που έχει εκχωρηθεί ως κάτοχος του αντικειμένου που δημιουργείται. Αυτή η παράμετρος περιγράφεται ως παράμετρος με μια προεπιλεγμένη τιμή, η οποία ορίζεται ως μηδέν. Έτσι, εάν η διεύθυνση του κατόχου δεν έχει καθοριστεί, τότε η παράμετρος μηδενίζεται και το σχήμα ιδιοκτησίας για ένα τέτοιο αντικείμενο είναι απενεργοποιημένο. Σε αυτήν την περίπτωση, θα πρέπει να θυμάστε να καταστρέψετε ρητά ένα τέτοιο αντικείμενο.

Κατά την υλοποίηση σχημάτων αλυσίδας ιδιοκτησίας, ορισμένες βιβλιοθήκες χρησιμοποιούν μια παράμετρο που ονομάζεται ιδιοκτήτης, που μεταφράζεται από τα αγγλικά ως ιδιοκτήτης. Ωστόσο, στη βιβλιοθήκη Qt καλείται αυτή η παράμετρος μητρική εταιρεία, που μεταφράζεται από τα αγγλικά ως μητρική εταιρεία. Ως αποτέλεσμα, ορισμένοι αρχάριοι έχουν μια παρεξήγηση λόγω του γεγονότος ότι η έννοια του "γονέα" αναφέρεται παραδοσιακά σε αλυσίδες κληρονομικότητας στο OOP, αλλά οι αλυσίδες κληρονομικότητας και οι αλυσίδες ιδιοκτησίας δεν έχουν τίποτα κοινό. Να είστε προσεκτικοί και να μην πέσετε θύματα παρανοήσεων σε αυτό το θέμα.

Ας επιστρέψουμε για άλλη μια φορά στη γραμμή 13. Εκεί δημιουργήσαμε ένα αντικείμενο του οποίου ο ιδιοκτήτης έχει εκχωρηθεί στο τρέχον αντικείμενο του κύριου παραθύρου της εφαρμογής. Μεταβλητός plb, το οποίο αποθηκεύει τη διεύθυνση του δημιουργημένου αντικειμένου, θα καταστραφεί αυτόματα όταν φτάσει στο τέλος του κώδικα κατασκευής. Ωστόσο, το αντικείμενο που εκχωρήθηκε στη μνήμη θα συνεχίσει να ζει και θα ζει μέχρι να καταστραφεί το αντικείμενο του κύριου παραθύρου της εφαρμογής. Η καταστροφή του κύριου αντικειμένου παραθύρου θα καταστρέψει αυτόματα όλα τα αντικείμενα που κατέχει το αντικείμενο παραθύρου.

Στη γραμμή 14, έχουμε πρόσβαση σε μια μέθοδο για τον ορισμό ιδιοτήτων γεωμετρίας που καθορίζουν την τοποθέτηση του προσαρμοσμένου αντικειμένου σε σχέση με τον κάτοχό του. Η πρώτη και η δεύτερη τιμή υποδεικνύουν τις οριζόντιες και κάθετες συντεταγμένες για την επάνω αριστερή γωνία του αντικειμένου. Η τρίτη και η τέταρτη τιμή υποδεικνύουν το πλάτος και το ύψος του προσαρμοσμένου αντικειμένου.

Εάν έχετε βεβαιωθεί ότι το παράδειγμα που δημιουργήθηκε στην προηγούμενη ενότητα συναρμολογήθηκε και εκτελέστηκε χωρίς σφάλματα, τότε αυτό το παράδειγμα, που είναι επέκταση του προηγούμενου, θα πρέπει επίσης να εκτελεστεί.

Χρησιμοποιώντας αυτήν την εφαρμογή, μπορείτε να πειραματιστείτε με τις επιλογές εκκίνησης της εφαρμογής. Ο ευκολότερος τρόπος για να το κάνετε αυτό είναι στην κονσόλα. Μεταβείτε στον κατάλογο δημιουργίας εφαρμογής και ακολουθήστε τις παρακάτω επιλογές για να εκτελέσετε την εφαρμογή με παραμέτρους. Σε κάθε εκκίνηση θα πρέπει να υπάρχει μια αξιοσημείωτη διαφορά στο στυλ σχεδίασης γραφικών στοιχείων.

$ ./app1 -style=motif $ ./app1 -style=windows $ ./app1 -style=platinum

Σε αυτό το παράδειγμα, το εκτελέσιμο αρχείο της εφαρμογής καθορίζεται από το όνομα app1. Είναι πιθανό στην περίπτωσή σας το εκτελέσιμο αρχείο να έχει διαφορετικό όνομα. Στο λειτουργικό σύστημα Windows, τα εκτελέσιμα αρχεία έχουν την επέκταση exe. Επιπλέον, στο λειτουργικό σύστημα Windows, μπορείτε να εκκινήσετε ένα εκτελέσιμο αρχείο από τον τρέχοντα κατάλογο χωρίς να καθορίσετε μια σχετική διαδρομή, π.χ. χωρίς ένδειξη ( ./ ) - ο χαρακτήρας κουκκίδας είναι συνώνυμο του τρέχοντος καταλόγου και ο χαρακτήρας προς τα εμπρός κάθετο είναι ένας διαχωριστικός χαρακτήρας στην καταχώρηση διαδρομής αρχείου. Επίσης, λάβετε υπόψη ότι το σύμβολο του δολαρίου είναι το τυπικό σύμβολο προτροπής στην κονσόλα *nix για έναν κανονικό χρήστη και δεν χρειάζεται να πληκτρολογηθεί ως μέρος της εντολής. Στην κονσόλα των Windows, ο χαρακτήρας προτροπής είναι συνήθως ο χαρακτήρας της αγκύλης ( > ).

Οι επιλογές εκκίνησης μπορούν επίσης να καθοριστούν κατά την εκκίνηση μιας εφαρμογής από το περιβάλλον ανάπτυξης QtCreator. Για να το κάνετε αυτό, κάντε κλικ στο εικονίδιο στην αριστερή γραμμή εργαλείων Έργα. Θα ανοίξει η αντίστοιχη καρτέλα ρυθμίσεων. Στο επάνω μέρος του παραθύρου μπορείτε να δείτε ένα ιεραρχικό σύστημα καρτελών. Οι καρτέλες ανώτατου επιπέδου ορίζουν το έργο, καθώς πολλά έργα μπορούν να είναι ανοιχτά στο περιβάλλον ανάπτυξης. Το επόμενο επίπεδο καρτελών πρέπει, μεταξύ άλλων, να περιέχει μια καρτέλα Build&Run, που χρειαζόμαστε. Σε αυτήν την καρτέλα, στη συνέχεια επιλέγετε την έκδοση Qt SDK, σε περίπτωση που δημιουργείτε ένα έργο για πολλές εκδόσεις ταυτόχρονα. Εάν συναρμολογείτε ένα έργο για μία έκδοση, τότε η επιλογή θα αποτελείται από ένα στοιχείο. Μέσα στο widget επιλογής έκδοσης Qt SDK, υπάρχουν δύο στυλιζαρισμένα κουμπιά με στρογγυλεμένες άκρες - κουμπιά ΟικοδομώΚαι Τρέξιμο. Κάντε κλικ στο κουμπί Τρέξιμογια να επιλέξετε την κατάλληλη ομάδα ρυθμίσεων. Εκεί, στην ομώνυμη ομάδα παραμέτρων Τρέξιμοθα βρείτε ένα πεδίο εισαγωγής μίας γραμμής απέναντι από την ετικέτα Επιχειρήματα. Αυτός είναι ο απώτερος στόχος της επιλογής μας. Ας γράψουμε εκεί την παρακάτω γραμμή.

Στυλ=μοτίβο

Εκκινήστε την εφαρμογή. Στη συνέχεια, δοκιμάστε άλλες τιμές: παράθυραΚαι πλατίνα. Θυμηθείτε ότι το αντικείμενο της κλάσης Εφαρμογή Qυποστηρίζει μια λίστα με μερικές ντουζίνες παραμέτρων εκκίνησης, για τις οποίες μπορείτε να διαβάσετε στη βοήθεια για τους αντίστοιχους κατασκευαστές κλάσεων.

Καθώς επεξεργάζεστε το παράδειγμα, ελέγξτε τις πληροφορίες αναφοράς για τις κλάσεις που χρησιμοποιούνται στο παράδειγμα. Δοκιμάστε να προσθέσετε άλλες παρουσίες της ετικέτας, το πεδίο εισαγωγής μιας γραμμής και τις κλάσεις κουμπιών στη φόρμα. Επιπλέον, δοκιμάστε να διαβάσετε τη βοήθεια και να προσθέσετε αντικείμενα των παρακάτω τάξεων στη φόρμα.

  1. QComboBox— κλάση αναπτυσσόμενης λίστας.
  2. QCheckBox— κλάση σημαίας (ελεγκτής).
  3. QTextEdit— κλάση πεδίου εισαγωγής πολλαπλών γραμμών. Χρησιμοποιείται τόσο για την επεξεργασία όσο και για την παρουσίαση κειμένου. Περιέχει πολύ πλούσιες δυνατότητες για την παρουσίαση εγγράφων διαχωρίζοντας τις λειτουργίες ειδικών συνθέτων εγγράφων σε ξεχωριστές κατηγορίες.

Ολοκληρώνοντας το μάθημα, πρέπει να σημειωθεί ότι η χρησιμοποιούμενη μέθοδος «άκαμπτης» τοποθέτησης αντικειμένων στο πεδίο φόρμας, μέσω ρητής ένδειξης της γεωμετρίας τοποθέτησης, δεν είναι παραδοσιακή και συνιστάται στη βιβλιοθήκη κλάσης Qt. Τα παρακάτω μαθήματα θα εξετάσουν τους διαχειριστές διάταξης, που είναι σύγχρονα και βολικά μέσα για την τοποθέτηση γραφικών στοιχείων σε μια φόρμα.

Πρόκειται για μια εργαλειοθήκη ανάπτυξης λογισμικού πολλαπλών πλατφορμών στη γλώσσα προγραμματισμού C++. Υπάρχουν επίσης "δεσμεύσεις" σε πολλές άλλες γλώσσες προγραμματισμού: Python - PyQt, Ruby - QtRuby, Java - Qt Jambi, PHP - PHP-Qt και άλλες.
Σας επιτρέπει να εκτελείτε λογισμικό γραμμένο με τη βοήθειά του στα περισσότερα σύγχρονα λειτουργικά συστήματα, απλώς μεταγλωττίζοντας το πρόγραμμα για κάθε λειτουργικό σύστημα χωρίς να αλλάξετε τον πηγαίο κώδικα. Περιλαμβάνει όλες τις βασικές κλάσεις που μπορεί να απαιτούνται κατά την ανάπτυξη λογισμικού εφαρμογών, που κυμαίνονται από στοιχεία γραφικής διεπαφής έως κλάσεις για εργασία με το δίκτυο, βάσεις δεδομένων και XML. Το Qt είναι πλήρως αντικειμενοστρεφές, εύκολα επεκτάσιμο και υποστηρίζει τεχνικές προγραμματισμού που βασίζονται σε στοιχεία.
Σε αυτό το άρθρο θα σας δείξω πώς να γράψετε ένα απλό πρόγραμμα "Hello, World!". χρησιμοποιώντας τη βιβλιοθήκη Qt4

Αναπτυξιακό περιβάλλον

Αρχικά, ας ορίσουμε το περιβάλλον ανάπτυξης. Προσωπικά, χρησιμοποιώ το cross-platform IDE Code::Blocks για να γράψω ένα πρόγραμμα (μπορείτε να διαβάσετε περισσότερα σχετικά με την εργασία σε αυτό το IDE με το Qt4). Υπάρχουν επίσης πρόσθετα για εργασία με Qt στο Eclipse. Μια εμπορική έκδοση του Qt για MS Windows μπορεί να ενσωματωθεί στο MSVS. Τα προγράμματα μπορούν επίσης να γραφτούν σε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου και στη συνέχεια να μεταγλωττιστούν από τη γραμμή εντολών.
Για λόγους σαφήνειας, θα δείξω πώς να μεταγλωττίσετε προγράμματα γραμμένα σε Qt χειροκίνητα.

Πρώτο πρόγραμμα

Πρώτα, δημιουργήστε ένα αρχείο σε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου και ονομάστε το, για παράδειγμα, main.cpp
Ας γράψουμε σε αυτό τα εξής:
  1. #συμπεριλαμβάνω
  2. #συμπεριλαμβάνω
  3. Εφαρμογή QApplication (argc, argv);
  4. QDialog *dialog = νέο QDialog;
  5. QLabel *label = new QLabel(διάλογος);
  6. label->setText( "Γεια σου Κόσμε!" );
  7. dialog-> show();
  8. επιστροφή app.exec();

Στις γραμμές 1 και 2 συμπεριλάβαμε τα αρχεία κεφαλίδας Qt στα οποία βρίσκονται οι κύριες κλάσεις.
Στη γραμμή 4 δηλώσαμε την κύρια συνάρτηση - την κύρια συνάρτηση από την οποία ξεκινά η εκτέλεση οποιουδήποτε προγράμματος. Επιστρέφει έναν ακέραιο αριθμό (το αποτέλεσμα του προγράμματος, 0 - αν όλα είναι εντάξει) και λαμβάνει δύο μεταβλητές ως είσοδο - τον αριθμό των παραμέτρων της γραμμής εντολών και τον πίνακα στον οποίο είναι αποθηκευμένες.
Στη γραμμή 5 δημιουργούμε ένα αντικείμενο εφαρμογής. Περνάμε μεταβλητές γραμμής εντολών σε αυτό το αντικείμενο.
Στη γραμμή 6 δημιουργούμε ένα παράθυρο διαλόγου - ένα παραλληλόγραμμο γραφικό παράθυρο με γραμμή τίτλου και κουμπιά στην επάνω δεξιά γωνία. Δημιουργήστε μια ετικέτα (γραμμή 7). Όταν δημιουργούμε μια ετικέτα, περνάμε έναν δείκτη στο παράθυρο διαλόγου στον κατασκευαστή της, ο οποίος γίνεται γονέας της. Όταν διαγράφετε έναν γονέα, όλα τα παιδιά του διαγράφονται αυτόματα, κάτι που είναι πολύ βολικό. Στη συνέχεια ορίζουμε το κείμενο της ετικέτας καλώντας τη συνάρτηση setText() (γραμμή 8). Όπως μπορείτε να δείτε από το παράδειγμα, μπορείτε να χρησιμοποιήσετε ετικέτες html για το εμφανιζόμενο κείμενο.
Στη γραμμή 9 εμφανίζουμε το πλαίσιο διαλόγου της ετικέτας στην οθόνη.
Τέλος, στη γραμμή 10, ξεκινάμε τον βρόχο συμβάντων του λειτουργικού συστήματος της εφαρμογής. Επιστρέφουμε το αποτέλεσμα της λειτουργίας του αντικειμένου ως αποτέλεσμα του προγράμματος.

Συλλογή

Τώρα ας συντάξουμε το γραπτό πρόγραμμα.
Ας πάμε στον κατάλογο όπου αποθηκεύσαμε το αρχείο main.cpp και εκτελούμε την εντολή

$ qmake -έργο

Αυτό θα δημιουργήσει ένα πρότυπο έργου Qt4, το οποίο θα περιλαμβάνει αυτόματα όλα τα αρχεία πηγαίου κώδικα που βρίσκονται σε αυτόν τον κατάλογο. Το αποτέλεσμα θα είναι ένα αρχείο με το ίδιο όνομα με τον τρέχοντα κατάλογο και την επέκταση .pro. Θα μοιάζει με αυτό:

TEMPLATE=εφαρμογή
ΣΤΟΧΟΣ =
DEPENDPATH += .
ΠΕΡΙΛΑΜΒΑΝΕΤΑΙ += .

#Εισαγωγή
ΠΗΓΕΣ += main.cpp

Ως αποτέλεσμα, θα λάβουμε ένα Makefile, το οποίο χρησιμοποιούμε για να μεταγλωττίσουμε το πρόγραμμα εκτελώντας την ακόλουθη εντολή:

Ας περιμένουμε μέχρι να τελειώσει η διαδικασία μεταγλώττισης και να τρέξουμε το πρώτο μας πρόγραμμα. Θα μοιάζει κάπως έτσι:

Δεύτερο πρόγραμμα

Για να αποκτήσετε πλήρη έλεγχο στα δημιουργημένα παράθυρα και άλλα γραφικά στοιχεία, πρέπει να δημιουργήσετε κλάσεις που προέρχονται από αυτά. Ας δημιουργήσουμε μια παράγωγη κλάση MyDialog. Θα χρησιμοποιήσουμε την κλάση QDialog ως γονική κλάση. Θα τοποθετήσουμε την περιγραφή της τάξης μας στο αρχείο κεφαλίδας mydialog.h:
  1. #συμπεριλαμβάνω
  2. #συμπεριλαμβάνω
  3. #συμπεριλαμβάνω
  4. #συμπεριλαμβάνω
  5. κλάση MyDialog: δημόσιο QDialog (
  6. Q_OBJECT
  7. κοινό:
  8. MyDialog(QWidget *parent = 0);
* Αυτός ο πηγαίος κώδικας επισημάνθηκε με το εργαλείο επισήμανσης πηγαίου κώδικα.
Στις τέσσερις πρώτες γραμμές περιλαμβάνουμε τα απαραίτητα αρχεία κεφαλίδας των γραφικών στοιχείων που χρησιμοποιούνται - το παράθυρο διαλόγου, το κουμπί, την ετικέτα και τη διαχείριση κάθετης διάταξης. Χρησιμοποιήστε τέτοια μεγάλα αρχεία κεφαλίδας όπως , κ.λπ. σε μεγάλα έργα δεν συνιστάται, καθώς αυξάνει τον χρόνο μεταγλώττισης.
Στη γραμμή έξι, ορίσαμε την κλάση μας ώστε να προκύπτει από το QDialog.
Στην επόμενη γραμμή καθορίσαμε τη μακροεντολή Q_OBJECT, η οποία λέει στον προεπεξεργαστή Qt ότι αυτή η κλάση θα χρησιμοποιήσει πρόσθετες δυνατότητες Qt, για παράδειγμα, το σύστημα σήματος και υποδοχής.
Στη γραμμή 9 καθορίζουμε τον κατασκευαστή για το πλαίσιο διαλόγου μας. Έχει μόνο μία παράμετρο εισόδου - έναν δείκτη στο γονικό αντικείμενο (0 εάν δεν υπάρχει γονέας).
Θα ορίσουμε τον κατασκευαστή της κλάσης μας στο αρχείο mydialog.cpp:
  1. #include "mydialog.h"
  2. MyDialog::MyDialog(QWidget *parent) : QDialog(γονικό) (
  3. QVBoxLayout *layout = new QVBoxLayout(this);
  4. QLabel *label = new QLabel(this);
  5. label->setText( "Γεια σου Κόσμε!" );
  6. QPushButton *button = νέο QPushButton(αυτό );
  7. button->setText("Κλείσιμο" );
  8. layout->addWidget(label);
  9. layout->addWidget(button);
  10. connect(button, SIGNAL(κλικ()), αυτό , SLOT(close()));
* Αυτός ο πηγαίος κώδικας επισημάνθηκε με το εργαλείο επισήμανσης πηγαίου κώδικα.

Στη γραμμή 4 δημιουργούμε έναν διαχειριστή διάταξης που θα εμφανίζει αυτόματα όλα τα γραφικά στοιχεία που έχουν προστεθεί σε αυτό κάθετα. Η δημιουργία μιας επιγραφής είναι παρόμοια με το προηγούμενο παράδειγμα.
Στις γραμμές 7 και 8 δημιουργούμε ένα κουμπί και ορίζουμε το κείμενό του. Στις επόμενες δύο γραμμές προσθέτουμε τα γραφικά στοιχεία μας στον διαχειριστή διάταξης ώστε να τα τακτοποιήσει αυτόματα.
Στη γραμμή 11, συνδέουμε το σήμα clicked() του κουμπιού στην υποδοχή close() του παραθύρου διαλόγου μας. Κάθε αντικείμενο Qt μπορεί να έχει τα δικά του σήματα και υποδοχές, τα οποία μπορούν να συνδεθούν με τα σήματα και τις υποδοχές άλλων αντικειμένων και έτσι να επικοινωνούν μεταξύ των στοιχείων του προγράμματος.
Το αρχείο main.cpp θα μοιάζει με αυτό:
  1. #συμπεριλαμβάνω
  2. #include "mydialog.h"
  3. int main(int argc, char * argv) (
  4. Εφαρμογή QApplication (argc, argv);
  5. MyDialog *dialog = νέο MyDialog;
  6. dialog-> show();
  7. επιστροφή app.exec();
* Αυτός ο πηγαίος κώδικας επισημάνθηκε με το εργαλείο επισήμανσης πηγαίου κώδικα.

Ανοικοδόμηση του έργου ως ομάδα

$ qmake -έργο

Για να προστεθούν αυτόματα νέα αρχεία σε αυτό και να το μεταγλωττίσουμε. Έτσι φαίνεται το νέο μας πρόγραμμα:

Τρίτο πρόγραμμα

Εάν ένα παράθυρο διαλόγου περιέχει πολλά γραφικά στοιχεία, τότε η δημιουργία τέτοιων παραθύρων μπορεί να είναι αρκετά κουραστική. Για να απλοποιηθεί αυτή η διαδικασία, υπάρχει ένα εργαλείο που ονομάζεται Qt Designer. Ας το λανσάρουμε

Και επιλέξτε να δημιουργήσετε ένα πλαίσιο διαλόγου χωρίς κουμπιά. Προσθέτουμε μια ετικέτα και ένα κουμπί σε αυτό και επεξεργαζόμαστε το κείμενό τους. Χρησιμοποιώντας το εργαλείο Signal/Slot Editor, συνδέουμε το σήμα clicked() του κουμπιού στην υποδοχή close() του παραθύρου διαλόγου. Τα τακτοποιούμε κάθετα χρησιμοποιώντας το layout manager. Αποθηκεύουμε το αρχείο που προκύπτει με το όνομα mydialog.ui. Αργότερα θα μετατραπεί αυτόματα σε ένα αρχείο κεφαλίδας με το όνομα ui_mydialog.h.
Αλλάζουμε το αρχείο κεφαλίδας του πλαισίου διαλόγου μας mydialog.h ως εξής:

Πρόκειται για μια εργαλειοθήκη ανάπτυξης λογισμικού πολλαπλών πλατφορμών στη γλώσσα προγραμματισμού C++. Υπάρχουν επίσης "δεσμεύσεις" σε πολλές άλλες γλώσσες προγραμματισμού: Python - PyQt, Ruby - QtRuby, Java - Qt Jambi, PHP - PHP-Qt και άλλες.
Σας επιτρέπει να εκτελείτε λογισμικό γραμμένο με τη βοήθειά του στα περισσότερα σύγχρονα λειτουργικά συστήματα, απλώς μεταγλωττίζοντας το πρόγραμμα για κάθε λειτουργικό σύστημα χωρίς να αλλάξετε τον πηγαίο κώδικα. Περιλαμβάνει όλες τις βασικές κλάσεις που μπορεί να απαιτούνται κατά την ανάπτυξη λογισμικού εφαρμογών, που κυμαίνονται από στοιχεία γραφικής διεπαφής έως κλάσεις για εργασία με το δίκτυο, βάσεις δεδομένων και XML. Το Qt είναι πλήρως αντικειμενοστρεφές, εύκολα επεκτάσιμο και υποστηρίζει τεχνικές προγραμματισμού που βασίζονται σε στοιχεία.
Σε αυτό το άρθρο θα σας δείξω πώς να γράψετε ένα απλό πρόγραμμα "Hello, World!". χρησιμοποιώντας τη βιβλιοθήκη Qt4

Αναπτυξιακό περιβάλλον

Αρχικά, ας ορίσουμε το περιβάλλον ανάπτυξης. Προσωπικά, χρησιμοποιώ το cross-platform IDE Code::Blocks για να γράψω ένα πρόγραμμα (μπορείτε να διαβάσετε περισσότερα σχετικά με την εργασία σε αυτό το IDE με το Qt4). Υπάρχουν επίσης πρόσθετα για εργασία με Qt στο Eclipse. Μια εμπορική έκδοση του Qt για MS Windows μπορεί να ενσωματωθεί στο MSVS. Τα προγράμματα μπορούν επίσης να γραφτούν σε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου και στη συνέχεια να μεταγλωττιστούν από τη γραμμή εντολών.
Για λόγους σαφήνειας, θα δείξω πώς να μεταγλωττίσετε προγράμματα γραμμένα σε Qt χειροκίνητα.

Πρώτο πρόγραμμα

Πρώτα, δημιουργήστε ένα αρχείο σε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου και ονομάστε το, για παράδειγμα, main.cpp
Ας γράψουμε σε αυτό τα εξής:
  1. #συμπεριλαμβάνω
  2. #συμπεριλαμβάνω
  3. Εφαρμογή QApplication (argc, argv);
  4. QDialog *dialog = νέο QDialog;
  5. QLabel *label = new QLabel(διάλογος);
  6. label->setText( "Γεια σου Κόσμε!" );
  7. dialog-> show();
  8. επιστροφή app.exec();

Στις γραμμές 1 και 2 συμπεριλάβαμε τα αρχεία κεφαλίδας Qt στα οποία βρίσκονται οι κύριες κλάσεις.
Στη γραμμή 4 δηλώσαμε την κύρια συνάρτηση - την κύρια συνάρτηση από την οποία ξεκινά η εκτέλεση οποιουδήποτε προγράμματος. Επιστρέφει έναν ακέραιο αριθμό (το αποτέλεσμα του προγράμματος, 0 - αν όλα είναι εντάξει) και λαμβάνει δύο μεταβλητές ως είσοδο - τον αριθμό των παραμέτρων της γραμμής εντολών και τον πίνακα στον οποίο είναι αποθηκευμένες.
Στη γραμμή 5 δημιουργούμε ένα αντικείμενο εφαρμογής. Περνάμε μεταβλητές γραμμής εντολών σε αυτό το αντικείμενο.
Στη γραμμή 6 δημιουργούμε ένα παράθυρο διαλόγου - ένα παραλληλόγραμμο γραφικό παράθυρο με γραμμή τίτλου και κουμπιά στην επάνω δεξιά γωνία. Δημιουργήστε μια ετικέτα (γραμμή 7). Όταν δημιουργούμε μια ετικέτα, περνάμε έναν δείκτη στο παράθυρο διαλόγου στον κατασκευαστή της, ο οποίος γίνεται γονέας της. Όταν διαγράφετε έναν γονέα, όλα τα παιδιά του διαγράφονται αυτόματα, κάτι που είναι πολύ βολικό. Στη συνέχεια ορίζουμε το κείμενο της ετικέτας καλώντας τη συνάρτηση setText() (γραμμή 8). Όπως μπορείτε να δείτε από το παράδειγμα, μπορείτε να χρησιμοποιήσετε ετικέτες html για το εμφανιζόμενο κείμενο.
Στη γραμμή 9 εμφανίζουμε το πλαίσιο διαλόγου της ετικέτας στην οθόνη.
Τέλος, στη γραμμή 10, ξεκινάμε τον βρόχο συμβάντων του λειτουργικού συστήματος της εφαρμογής. Επιστρέφουμε το αποτέλεσμα της λειτουργίας του αντικειμένου ως αποτέλεσμα του προγράμματος.

Συλλογή

Τώρα ας συντάξουμε το γραπτό πρόγραμμα.
Ας πάμε στον κατάλογο όπου αποθηκεύσαμε το αρχείο main.cpp και εκτελούμε την εντολή

$ qmake -έργο

Αυτό θα δημιουργήσει ένα πρότυπο έργου Qt4, το οποίο θα περιλαμβάνει αυτόματα όλα τα αρχεία πηγαίου κώδικα που βρίσκονται σε αυτόν τον κατάλογο. Το αποτέλεσμα θα είναι ένα αρχείο με το ίδιο όνομα με τον τρέχοντα κατάλογο και την επέκταση .pro. Θα μοιάζει με αυτό:

TEMPLATE=εφαρμογή
ΣΤΟΧΟΣ =
DEPENDPATH += .
ΠΕΡΙΛΑΜΒΑΝΕΤΑΙ += .

#Εισαγωγή
ΠΗΓΕΣ += main.cpp

Ως αποτέλεσμα, θα λάβουμε ένα Makefile, το οποίο χρησιμοποιούμε για να μεταγλωττίσουμε το πρόγραμμα εκτελώντας την ακόλουθη εντολή:

Ας περιμένουμε μέχρι να τελειώσει η διαδικασία μεταγλώττισης και να τρέξουμε το πρώτο μας πρόγραμμα. Θα μοιάζει κάπως έτσι:

Δεύτερο πρόγραμμα

Για να αποκτήσετε πλήρη έλεγχο στα δημιουργημένα παράθυρα και άλλα γραφικά στοιχεία, πρέπει να δημιουργήσετε κλάσεις που προέρχονται από αυτά. Ας δημιουργήσουμε μια παράγωγη κλάση MyDialog. Θα χρησιμοποιήσουμε την κλάση QDialog ως γονική κλάση. Θα τοποθετήσουμε την περιγραφή της τάξης μας στο αρχείο κεφαλίδας mydialog.h:
  1. #συμπεριλαμβάνω
  2. #συμπεριλαμβάνω
  3. #συμπεριλαμβάνω
  4. #συμπεριλαμβάνω
  5. κλάση MyDialog: δημόσιο QDialog (
  6. Q_OBJECT
  7. κοινό:
  8. MyDialog(QWidget *parent = 0);
* Αυτός ο πηγαίος κώδικας επισημάνθηκε με το εργαλείο επισήμανσης πηγαίου κώδικα.
Στις τέσσερις πρώτες γραμμές περιλαμβάνουμε τα απαραίτητα αρχεία κεφαλίδας των γραφικών στοιχείων που χρησιμοποιούνται - το παράθυρο διαλόγου, το κουμπί, την ετικέτα και τη διαχείριση κάθετης διάταξης. Χρησιμοποιήστε τέτοια μεγάλα αρχεία κεφαλίδας όπως , κ.λπ. σε μεγάλα έργα δεν συνιστάται, καθώς αυξάνει τον χρόνο μεταγλώττισης.
Στη γραμμή έξι, ορίσαμε την κλάση μας ώστε να προκύπτει από το QDialog.
Στην επόμενη γραμμή καθορίσαμε τη μακροεντολή Q_OBJECT, η οποία λέει στον προεπεξεργαστή Qt ότι αυτή η κλάση θα χρησιμοποιήσει πρόσθετες δυνατότητες Qt, για παράδειγμα, το σύστημα σήματος και υποδοχής.
Στη γραμμή 9 καθορίζουμε τον κατασκευαστή για το πλαίσιο διαλόγου μας. Έχει μόνο μία παράμετρο εισόδου - έναν δείκτη στο γονικό αντικείμενο (0 εάν δεν υπάρχει γονέας).
Θα ορίσουμε τον κατασκευαστή της κλάσης μας στο αρχείο mydialog.cpp:
  1. #include "mydialog.h"
  2. MyDialog::MyDialog(QWidget *parent) : QDialog(γονικό) (
  3. QVBoxLayout *layout = new QVBoxLayout(this);
  4. QLabel *label = new QLabel(this);
  5. label->setText( "Γεια σου Κόσμε!" );
  6. QPushButton *button = νέο QPushButton(αυτό );
  7. button->setText("Κλείσιμο" );
  8. layout->addWidget(label);
  9. layout->addWidget(button);
  10. connect(button, SIGNAL(κλικ()), αυτό , SLOT(close()));
* Αυτός ο πηγαίος κώδικας επισημάνθηκε με το εργαλείο επισήμανσης πηγαίου κώδικα.

Στη γραμμή 4 δημιουργούμε έναν διαχειριστή διάταξης που θα εμφανίζει αυτόματα όλα τα γραφικά στοιχεία που έχουν προστεθεί σε αυτό κάθετα. Η δημιουργία μιας επιγραφής είναι παρόμοια με το προηγούμενο παράδειγμα.
Στις γραμμές 7 και 8 δημιουργούμε ένα κουμπί και ορίζουμε το κείμενό του. Στις επόμενες δύο γραμμές προσθέτουμε τα γραφικά στοιχεία μας στον διαχειριστή διάταξης ώστε να τα τακτοποιήσει αυτόματα.
Στη γραμμή 11, συνδέουμε το σήμα clicked() του κουμπιού στην υποδοχή close() του παραθύρου διαλόγου μας. Κάθε αντικείμενο Qt μπορεί να έχει τα δικά του σήματα και υποδοχές, τα οποία μπορούν να συνδεθούν με τα σήματα και τις υποδοχές άλλων αντικειμένων και έτσι να επικοινωνούν μεταξύ των στοιχείων του προγράμματος.
Το αρχείο main.cpp θα μοιάζει με αυτό:
  1. #συμπεριλαμβάνω
  2. #include "mydialog.h"
  3. int main(int argc, char * argv) (
  4. Εφαρμογή QApplication (argc, argv);
  5. MyDialog *dialog = νέο MyDialog;
  6. dialog-> show();
  7. επιστροφή app.exec();
* Αυτός ο πηγαίος κώδικας επισημάνθηκε με το εργαλείο επισήμανσης πηγαίου κώδικα.

Ανοικοδόμηση του έργου ως ομάδα

$ qmake -έργο

Για να προστεθούν αυτόματα νέα αρχεία σε αυτό και να το μεταγλωττίσουμε. Έτσι φαίνεται το νέο μας πρόγραμμα:

Τρίτο πρόγραμμα

Εάν ένα παράθυρο διαλόγου περιέχει πολλά γραφικά στοιχεία, τότε η δημιουργία τέτοιων παραθύρων μπορεί να είναι αρκετά κουραστική. Για να απλοποιηθεί αυτή η διαδικασία, υπάρχει ένα εργαλείο που ονομάζεται Qt Designer. Ας το λανσάρουμε

Και επιλέξτε να δημιουργήσετε ένα πλαίσιο διαλόγου χωρίς κουμπιά. Προσθέτουμε μια ετικέτα και ένα κουμπί σε αυτό και επεξεργαζόμαστε το κείμενό τους. Χρησιμοποιώντας το εργαλείο Signal/Slot Editor, συνδέουμε το σήμα clicked() του κουμπιού στην υποδοχή close() του παραθύρου διαλόγου. Τα τακτοποιούμε κάθετα χρησιμοποιώντας το layout manager. Αποθηκεύουμε το αρχείο που προκύπτει με το όνομα mydialog.ui. Αργότερα θα μετατραπεί αυτόματα σε ένα αρχείο κεφαλίδας με το όνομα ui_mydialog.h.
Αλλάζουμε το αρχείο κεφαλίδας του πλαισίου διαλόγου μας mydialog.h ως εξής:

Κάθε χρόνο υπάρχουν όλο και περισσότερα λειτουργικά συστήματα, και ως εκ τούτου είναι όλο και πιο δύσκολο για τους προγραμματιστές να ικανοποιήσουν τις ανάγκες των χρηστών. Οι τρεις πιο δημοφιλείς πλατφόρμες υπολογιστών - Windows, Linux και Mac OS, καθώς και τρεις πλατφόρμες για φορητές συσκευές - Android, iOS και Windows Mobile - συνεχίζουν να μάχονται ενεργά μεταξύ τους. Αυτό σημαίνει ότι μια εφαρμογή υψηλής ποιότητας πρέπει να λειτουργεί σε όλες τις μεγάλες πλατφόρμες.

Η ανάπτυξη πολλαπλών πλατφορμών βοηθά στην αντιμετώπιση αυτού του προβλήματος. Ένα από τα πιο δημοφιλή περιβάλλοντα ανάπτυξης πολλαπλών πλατφορμών - το Qt Creator - θα συζητηθεί σε αυτό το άρθρο. Θα εξετάσουμε πώς να εγκαταστήσετε και να ρυθμίσετε τις παραμέτρους του Qt Creator, καθώς και πώς να εργαστείτε στο Qt Creator.

Τι είναι το Qt Creator

Το Qt Creator (όχι πολύ καιρό πριν ονομαζόταν Greenhouse) είναι ένα από τα πιο κοινά IDE μεταξύ πλατφορμών. Τα πλεονεκτήματά του είναι η ευκολία, η ταχύτητα λειτουργίας, αλλά και η ελευθερία, αφού είναι λογισμικό ανοιχτού κώδικα. Υποστηρίζονται γλώσσες όπως C, C++, QML.

Το πρόγραμμα γράφτηκε από μια εταιρεία που ονομάζεται Trolltech, η οποία εκπλήρωσε πλήρως το σκοπό της δημιουργίας του περιβάλλοντος - τη συνεργασία με το πλαίσιο γραφικών Qt. Μια βολική γραφική διεπαφή με υποστήριξη για Qt Widgets και QML, καθώς και μεγάλος αριθμός υποστηριζόμενων μεταγλωττιστών, σας επιτρέπει να δημιουργείτε γρήγορα και άνετα τη δική σας εφαρμογή πολλαπλών πλατφορμών.

Ο κύριος στόχος αυτού του IDE είναι να παρέχει την ταχύτερη ανάπτυξη πολλαπλών πλατφορμών χρησιμοποιώντας το δικό του πλαίσιο. Χάρη σε αυτό, οι προγραμματιστές έχουν μια εξαιρετική ευκαιρία να μην γράφουν εφαρμογές εγγενώς (δηλαδή χωριστά για κάθε πλατφόρμα), αλλά να δημιουργήσουν έναν κοινό κώδικα και, ενδεχομένως, να τον προσαρμόσουν στα χαρακτηριστικά των λειτουργικών συστημάτων που χρησιμοποιούνται.

Το Qt Creator περιλαμβάνει επίσης το βοηθητικό πρόγραμμα Qt Designer, το οποίο σας επιτρέπει να προσαρμόσετε την εμφάνιση του παραθύρου της εφαρμογής σας προσθέτοντας και σύροντας στοιχεία (παρόμοια με τα Windows Forms στο Visual Studio). Τα συστήματα κατασκευής που χρησιμοποιούνται είναι τα qmake, cmake και autotools.

Εγκατάσταση του Qt Creator

Λοιπόν, ήρθε η ώρα να δούμε πώς να εγκαταστήσετε το Qt Creator. Εάν για τα Windows οι προγραμματιστές φρόντισαν και δημιούργησαν ένα πρόγραμμα εγκατάστασης εκτός σύνδεσης, τότε στο Linux 32-bit αυτή η δυνατότητα δεν παρέχεται. Επομένως, κατά την εγκατάσταση μπορεί να χρειαστείτε μια σταθερή σύνδεση στο Διαδίκτυο (~20-30 λεπτά). Πρώτα, κατεβάστε το πρόγραμμα εγκατάστασης:

  • Κατεβάστε το Qt Creator για Linux 32-bit (κάντε κλικ στο " Δείτε άλλες επιλογές").
  • Κατεβάστε το Qt Creator για Linux 64-bit.

Αφού ολοκληρωθεί η λήψη, μεταβείτε στο φάκελο με το αρχείο, κάντε δεξί κλικ και επιλέξτε "Σκηνικά θέατρου".

Τώρα ας πάμε στην καρτέλα "Δικαιώματα"και επιλέξτε το πλαίσιο "Να επιτρέπεται σε αυτό το αρχείο να εκτελείται ως πρόγραμμα".

Ας ξεκινήσουμε το πρόγραμμα.

Τώρα πατάμε "Επόμενος".

Εδώ πρέπει να επιλέξετε έναν υπάρχοντα λογαριασμό ή να δημιουργήσετε έναν. Αυτή η ενέργεια είναι απαραίτητη για την επαλήθευση της άδειας (εμπορικής ή μη).

Κλικ "Επόμενος".

Επιλέξτε τον κατάλογο στον οποίο θα βρίσκεται το Qt. Είναι σημαντικό να μην υπάρχουν κυριλλικοί χαρακτήρες ή κενά στο μονοπάτι!

Αυτό το μενού περιέχει μια επιλογή στοιχείων. Για παράδειγμα, μπορείτε να επιλέξετε να εγκαταστήσετε εργαλεία για ανάπτυξη στο Android ή στοιχεία πηγής (αυτό απαιτείται για στατική συναρμολόγηση, αν κάποιος το χρειάζεται, γράψτε στα σχόλια και θα γράψω ξεχωριστό άρθρο). Εάν δεν είστε σίγουροι αν χρειάζεστε αυτά τα εξαρτήματα ή όχι, αφήστε τα έτσι προς το παρόν - ακόμη και μετά την εγκατάσταση του Qt, θα είναι δυνατή η αφαίρεση και η προσθήκη στοιχείων.

Σε αυτό το παράθυρο αποδεχόμαστε την άδεια χρήσης. Κλικ "Επόμενος".

Εάν είστε έτοιμοι, ξεκινήστε την εγκατάσταση. Θα σας ζητηθεί ο κωδικός πρόσβασης υπερχρήστη (sudo), μετά τον οποίο θα ξεκινήσει η λήψη και η εξαγωγή αρχείων. Μια εναλλακτική μέθοδος είναι η εγκατάσταση μέσω τερματικού. Πρώτα πρέπει να ενημερώσετε τη λίστα των πακέτων.

Λήψη και εγκατάσταση του Qt:

sudo apt εγκατάσταση qt5-default

Τώρα εγκαταστήστε το Qt Creator:

sudo apt εγκατάσταση qtcreator

Και, αν χρειαστεί, οι πηγές.

sudo apt install qtbase5-examples qtdeclarative5-examples

Ρύθμιση του Qt Creator

Αφού ολοκληρωθεί η εγκατάσταση, επανεκκινήστε τον υπολογιστή σας και εκκινήστε το Qt Creator. Μεταβείτε στο μενού "Εργαλεία" -> "Επιλογές".

Υπάρχουν πολλές καρτέλες που πρέπει να λάβετε υπόψη εδώ.

1. Τετάρτη- αυτό είναι η προσαρμογή της εμφάνισης του ίδιου του IDE, καθώς και η αλλαγή των συντομεύσεων πληκτρολογίου και η διαχείριση εξωτερικών βοηθητικών προγραμμάτων.

2. Επεξεργαστής κειμένου- εδώ μπορείτε να προσαρμόσετε την εμφάνιση, τις γραμματοσειρές και τα χρώματα του επεξεργαστή.

3. C++- επισήμανση σύνταξης, εργασία με επεκτάσεις αρχείων και UI (δηλαδή φόρμες).

4.Android- οι διαδρομές προς τα απαραίτητα εργαλεία συλλέγονται εδώ και οι συνδεδεμένες ή εικονικές συσκευές διαμορφώνονται επίσης σε αυτό το μενού.

Εγκατάσταση στοιχείων Qt Creator

Εάν ξαφνικά συμβεί να ξεχάσετε να εγκαταστήσετε ένα στοιχείο ή, αντίθετα, θέλετε να το αφαιρέσετε, τότε το Εργαλείο Συντήρησης Qt θα έρθει στη διάσωση. Αυτό είναι ένα εργαλείο που σας επιτρέπει να διαχειρίζεστε όλα τα στοιχεία του Qt Creator.

Για να το εκκινήσετε, μεταβείτε στο μενού εφαρμογών, επιλέξτε "Development" -> "Qt Maintenance Tool".

Επιλέξτε την απαιτούμενη επιλογή (Κατάργηση/προσθήκη στοιχείων, ενημέρωση στοιχείων ή κατάργηση Qt). Στη συνέχεια, εκτελέστε τις απαραίτητες λειτουργίες και κλείστε το παράθυρο.

Εργασία με το Qt Creator - το πρώτο έργο

Λοιπόν, η ώρα έφτασε! Η εγκατάσταση του Qt Creator ολοκληρώθηκε. Ήρθε η ώρα να φτιάξετε την πρώτη σας εφαρμογή πολλαπλών πλατφορμών σε Linux και στη συνέχεια να τη μεταγλωττίσετε στα Windows. Ας είναι... ένα πρόγραμμα που εμφανίζει ένα εικονίδιο Qt, ένα κουμπί και μια επιγραφή, στα οποία θα εμφανίζεται μια τυχαία φράση όταν πατηθεί το κουμπί. Το έργο είναι απλό, και, φυσικά, cross-platform!

Αρχικά, ας ανοίξουμε το περιβάλλον ανάπτυξης. Ας κάνουμε κλικ "Αρχείο" -> "Δημιουργία αρχείου ή έργου...". Ας επιλέξουμε την εφαρμογή Qt Widgets - η δημιουργία της είναι γρήγορη και εύκολη. Και το όνομά του είναι "Διαπλατφόρμα". Έτσι είναι!

Σετ - προεπιλογή. Αφήνουμε επίσης το κύριο παράθυρο αμετάβλητο. Ας δημιουργήσουμε ένα έργο.

Πρώτα πρέπει να διαμορφώσετε τη φόρμα - το κύριο παράθυρο της εφαρμογής. Είναι άδειο από προεπιλογή, αλλά δεν θα παραμείνει έτσι για πολύ.

Πάμε στον φάκελο "Forms" -> "mainwindow.ui". Θα ανοίξει το παράθυρο του Qt Designer:

Αφαιρέστε τη γραμμή μενού και τη γραμμή εργαλείων από τη φόρμα κάνοντας δεξί κλικ και επιλέγοντας το κατάλληλο στοιχείο. Τώρα σύρετε τα στοιχεία της Προβολής γραφικών, του κουμπιού και της ετικέτας ως εξής:

Για να αλλάξετε το κείμενο, κάντε διπλό κλικ στο στοιχείο. Στις ιδιότητες Label (στα δεξιά), επιλέξτε τη θέση κειμένου κάθετα και οριζόντια - κατακόρυφα.

Τώρα είναι ώρα να καταλάβουμε την έξοδο του εικονιδίου. Ας πάμε στο πρόγραμμα επεξεργασίας, κάνουμε δεξί κλικ σε οποιονδήποτε φάκελο στα αριστερά και επιλέγουμε "Προσθήκη νέου...". Τώρα πατάμε "Qt" -> "Αρχείο πόρων Qt". Όνομα - αποκ. Στο παράθυρο που ανοίγει, κάντε κλικ "Προσθήκη" -> "Προσθήκη προθέματος"και μετά την προσθήκη - "Προσθήκη αρχείων". Επιλέξτε το αρχείο και στο παράθυρο που εμφανίζεται "Λανθασμένη θέση αρχείου"κλικ "Αντίγραφο".

Δούλεψε! Σώζουμε τα πάντα. Ανοίξτε ξανά τη φόρμα. Κάντε δεξί κλικ στην Προβολή γραφικών και επιλέξτε "styleSheet..." -> "Add resource" -> "background-image". Στο αριστερό μέρος του παραθύρου που εμφανίζεται, επιλέξτε το πρόθεμα1 και στα δεξιά - την εικόνα μας. Κλικ "ΕΝΤΑΞΕΙ". Ρυθμίστε το μήκος και το πλάτος.

Ολοι! Τώρα μπορείτε να ξεκινήσετε την κωδικοποίηση. Κάνοντας δεξί κλικ στο κουμπί ανοίγει ένα μενού περιβάλλοντος, τώρα πρέπει να κάνετε κλικ "Μετάβαση στην υποδοχή..." -> "κλικ()". Στο παράθυρο εισάγουμε τον παρακάτω κωδικό:

Ή μπορείτε να κατεβάσετε το πλήρες έργο στο GitHub. Η εργασία με το Qt Creator ολοκληρώθηκε, κάντε κλικ στο εικονίδιο με το πράσινο βέλος στα αριστερά και περιμένετε να ξεκινήσει το πρόγραμμα (αν το βέλος είναι γκρι, κάντε πρώτα κλικ στο εικονίδιο του σφυριού). Ξεκίνησε! Ζήτω!

Ένας αρχάριος προγραμματιστής αμφιβάλλει συνεχώς ποιες τεχνολογίες να αρχίσει να κυριαρχεί, αυτή ή οποιαδήποτε άλλη. Πρέπει ένας αρχάριος προγραμματιστής να μάθει Qt; Σίγουρα απαραίτητο! Για παράδειγμα, διαβάστε αυτήν την ανάρτηση ή αναζητήστε κάτι στο Διαδίκτυο. Ακόμα δεν είστε σίγουροι αν χρειάζεστε Qt; Αν γράφετε σε C++, θα πρέπει να γνωρίζετε το Qt, απλά δεν έχετε άλλη εναλλακτική.

Πάμε λοιπόν...

Ας γράψουμε, για παράδειγμα, μια απλή αριθμομηχανή - προσθέτοντας δύο αριθμούς.

Ας δημιουργήσουμε ένα νέο έργο. Όπως μπορούμε να δούμε, υπάρχουν διάφοροι τύποι εφαρμογών. Εμείς, ως αρχάριοι, επιλέγουμε "Εφαρμογή Qt Widgets":

Υποδεικνύουμε το όνομα του έργου και τον φάκελο για την τοποθέτηση των αρχείων, για μένα: C:\projects\qt

Το Qt δημιουργεί αυτόματα τα ακόλουθα αρχεία:

  • lesson1.pro - αρχείο έργου
  • main.cpp - κύριο αρχείο με τη συνάρτηση main().
  • mainwindow.cpp - πηγαίος κώδικας του κύριου παραθύρου
  • mainwindow.h - αρχείο κεφαλίδας κύριου παραθύρου
  • mainwindow.ui - αρχείο φόρμας κύριου παραθύρου

Κάντε κλικ στο κουμπί "Τέλος" - ανοίγει το πρόγραμμα επεξεργασίας για την ανάπτυξη προγραμμάτων σε Qt.

Προς το παρόν, όλα θα πρέπει να είναι ξεκάθαρα για έναν αρχάριο προγραμματιστή Qt...

Ανοίξτε την κύρια φόρμα (για να το κάνετε αυτό, μεταβείτε στο mainwindow.ui).

Στα αριστερά είναι τα στοιχεία για τη δημιουργία μιας φόρμας οθόνης, στα δεξιά είναι η ίδια η φόρμα, είναι κενή. Ας προσθέσουμε τα απαραίτητα στοιχεία και μην ξεχάσουμε να ονομάσουμε τα πεδία εισαγωγής QLineEdit ως εξής: edtA, edtB και edtC, αντίστοιχα.

Βλέπουμε τα πεδία εισαγωγής στην οθόνη, τις λεζάντες τους στα αριστερά και το κουμπί "A + B =". Όταν κάνουμε κλικ σε αυτό το κουμπί πρέπει να προσθέσουμε τα Α και Β και να τοποθετήσουμε το αποτέλεσμα στο C.

Τι πρέπει να κάνω; Οποιοσδήποτε αρχάριος προγραμματιστής του Qt θα υποθέσει ότι πρέπει να συνδέσετε έναν χειριστή κλικ κουμπιού σε ένα κουμπί και θα έχει δίκιο! Σε οποιαδήποτε άλλα πλαίσια υπάρχει κάτι τέτοιο όπως συμβάν. Αλλά η Qt αποφάσισε να επιδειχθεί και βρήκε σήματα/κουλοχέρηδες. Αν και, στην ουσία, αυτό είναι πρακτικά το ίδιο πράγμα.

Κάντε δεξί κλικ στο κουμπί "A + B =", ανοίγει ένα αναδυόμενο μενού:

Κάντε κλικ στο "Μετάβαση στην υποδοχή"

Επιλέξτε το σήμα clicked() και στο πρόγραμμα επεξεργασίας κώδικα που ανοίγει, γράψτε έναν μικρό κώδικα σε Qt:

Void MainWindow::on_btnOK_clicked() ( int a = ui->edtA->text().toInt(); // Πάρτε το κείμενο edtA και μετατρέψτε το σε αριθμό a int b = ui->edtB->text() .toInt () Πάρτε το κείμενο edtB και μετατρέψτε το σε έναν αριθμό b int c = a + b // Προσθέστε τους αριθμούς QString s = QString // Μετατρέψτε το αποτέλεσμα σε μια συμβολοσειρά ->edtC->setText (s) // Εκτύπωση του αποτελέσματος σε edtC )

Η συνάρτηση χειρισμού σήματος clicked() ονομάζεται υποδοχή on_btnOK_clicked().



Ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο που θα σταλεί στους συντάκτες μας: