Πρόβλημα με πρόγραμμα που εκτελεί πολλές διεργασίες.



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

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

    Λοιπόν, αν και έμαθα πως να γράφω όλο των κώδικα "με το χέρι", για λόγους βιασύνης άνοιξα τον σχεδιαστή Qt , έφτιαξα εκεί το παράθυρο όπως το ήθελα και μετά επειδή το συγκεκριμένο πρόγραμμα το έκανα με Python3 αντί για C++, μετέτρεψα τον κώδικα σε Python. Μέχρι εδώ όλα τέλεια.

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

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

    Σε αυτό το textedit αντικείμενο το οποίο το έχω ονομάζει textedit_box , γίνονται textedit_box.append "γεγονότα" - πράγματα από δύο διαφορετικούς τρόπους και εδώ είναι ίσος που υπάρχει το πρόβλημα.

    Τι εννοώ, σε αυτό το textedit_box μπορεί :

    είτε να γράφει ο χρήστης κάτι σε ένα line_edit και με το που πατήσει ένα pushbutton να γίνεται textedit_box**.append** αυτό που έγραψε ( πράγμα στο οποίο μάλλον δεν έχει κανένα θέμα ),

    αλλά αλλά στο textedit_box γίνεται .append κάτι και με ένα δεύτερο τρόπο, ο οποίος έχει να κάνει με μία μέθοδο που την τρέχω συνεχόμενα από την αρχή του προγράμματος δημιουργώντας ένα νέο νήμα ( thread ) που τρέχει (χρησιμοποιώντας την βιβλιοθήκη της Python και όχι της Qt που μόλις ανακάλυψα πω επίσης έχει ), το οποίο νήμα σκοπό έχει να περιμένει μήπως σταλθούν κάποια δεδομένα στο πρόγραμμα, τα οποία πρέπει να εμφανιστούν σε αυτό το textedit_box.

    Εδώ λοιπόν όταν έρθει κάτι ( στην μέθοδο που τρέχει συνεχόμενα με thread ), επειδή εγώ τα έχω όλα μέσα στην ίδια κλάση απλώς ( όπως προανέφερα ) πάω και κάνω απλώς ένα :

    self.textedit_box.append( ότι ήρθε.. ).

    Όμως στο τερματικό έχω αυτό το error :

    QObject::connect: Cannot queue arguments of type 'QTextCursor'
    (Make sure 'QTextCursor' is registered using qRegisterMetaType().)

    Να αναφέρω πως αυτό που παίρνει ως παράμετρο είναι string.
    Το πρόβλημα νομίζω πως δημιουργείτε επειδή αυτή η μέθοδος τρέχει παράλληλα σε ένα άλλο νήμα και όπως διάβασα κάπου ( αν διάβασα σωστά ), η Qt τρέχει είδη ένα δικό της νήμα για την γραφική διεπαφή και ότι αλλαγές θέλω να γίνονται στη γραφική διασύνδεση πρέπει να γίνονται από το κύριο νήμα που τρέχει για την γραφική διεπαφή.

    Τι μπορώ να κάνω για να το διορθώσω.. ; Βρήκα διάφορα που λέγονται αλλά δεν τα κατάφερα.
    Σας παρακαλώ πολύ οποιαδήποτε βοήθεια δεκτή.

    Ευχαριστώ πάρα πάρα πολύ για τον χρόνο σας. :)

    Υ.Σ. : "Παίζω" από linux ubuntu. :)



Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.