Hallo! Ich arbeite mich grad in Qt ein und steh vor einem kleinen Verständnisproblem. Warum funktioniert das so nicht? QObject::connect(m_lineEdit, SIGNAL(textChanged(text)), m_lineEdit2, SLOT(insert(text))); Das ganze soll machen: Wenn in m_lineEdit ein Buchstabe hinzugefügt wird, soll er in m_lineEdit2 kopiert werden. Verstehe nicht ganz warum das so nicht geht. Mache ich da bei den Parametern was falsch? Hoffe hier arbeitet jemand mit Qt und kann mir weiterhelfen. Gruß Dude
Hallo Manuel! Erstmal danke für deine Hilfe. Wenn ich das ganze mit dem Designer erstelle und dort auch die Connection erstelle, dann funktioniert es bei mir auch. Das Problem, dass immer der ganze Text kopiert wird, habe ich mit dem Slot setText(text) gelöst. Dann wird sofort nach einer Eingabe auch das zweite lineEdit aktualisiert. Meine Frage ist jetz, wenn ich das manuell verbinden möchte, so wie ich das oben gezeigt habe, dann funktioniert das ganze nicht. Muss ich "text" vorher noch als QString* deklarieren? Oder habe ich da noch irgendwas vergessen, was man beachten muss? Gruß Dude!
Du versuchst, ein Signal und einen Slot zu verbinden, die als ersten und einzigen Parameter einen vom Typ "text" haben. Diese gibt es nicht. Es sollte wohl eher const QString& sein, also: QObject::connect(m_lineEdit, SIGNAL(textChanged(const QString&)), m_lineEdit2, SLOT(setText(const QString&)));
Hallo! Ja genau das war es. Dachte immer, dass ich einen Zeiger übergeben muss, der vom Signal bearbeitet wird und dann vom Slot gelesen wird. Also habe ich einen Zeiger QString *text deklariert. Das war das Problem. Also danke für die Hilfe. Nochmal eine andere Sache: Wie kann ich mir das relativ einfach beibringen, wie ich Linien und Punkte in einem Fenster zeichen lassen kann? Suche auch noch ein vernünftige Tutorial für Netzwerkprogrammierung und Serielle Schnitstelle mit QT. Das von Trolltech allein finde ich etwas sparsam und ein wenig zu englisch :-) MFG Dude.
Wenn man selbst in ein Widget zeichnen will, überschreibt man dessen Funktion paintEvent() und erzeugt darin eine Instanz von QPainter.
1 | void MyWidget::paintEvent(QPaintEvent* ev) |
2 | {
|
3 | QPainter painter(this); |
4 | painter->drawLine(10, 10, 100, 100); |
5 | }
|
Die serielle Schnittstelle kann man in Qt nicht direkt ansprechen, aber es gibt eine Erweiterung namens QExtSerial, die aber wohl schon recht alt ist und nicht mehr gepflegt wird. Netzwerkprogrammierung geht auch in Qt, ist aber nicht so flexibel wie BSD Sockets, dafür halt portabel. Dazu gibt's bei Qt auch einige Beispielprogramme, genauso wie für's Zeichnen und so ziemlich alles andere.
Hallo! Erstmal allerbesten Dank für die Hilfe von euch. Hat mich schon ein gutes Stück weiter gebracht. Jetzt aber mein nächstes Problem: Ich habe jetzt ein Programm in einem Widget geschrieben, dass ich so gut finde, dass ich das gerne noch mit ein paar Buttons zur Eingabe uns so aussatten würde. Jetzt habe ich aber erstmal ohne den Designer gearbeitet und einfach eine Klasse von QWidget abgeleitet, wo ich auch alle Funktionen drin habe. Kann ich im nachhinein noch mit dem Designer arbeiten und meine Klasse da einbinden oder wie kriege ich das hin, ohne meine Klasse großartig zu verändern? Gruß Dude
Hallo! Hm also das nächstemal denke ich auf jedenfall vorher mal drüber nach, wie das später aussehen soll. So ein bisl Projektmanagement is ab ner bestimmten Quelltextlänge wohl ganz sinnvoll. Habs jetzt aber schon ein bisl anders gelöst. Habe einfach alles was ich noch einbauen wollte mit in mein Widget reingepackt. Sieht wohl ganz passabel aus. Aber trotzdem danke für den Tip. Werde ich mir das nächstemal zu Herzen nehmen. Was mir jetzt noch Probleme macht ist, wenn ich das Fenster verkleinere, malt er ständig die Buttons neu, und das quer durch das Fenster. Kann man das noch irgendwie unterbinden? Und habe ich die Möglichkeit an die Bildschirmauflösung des Betriebssystems zu kommen um mein Fenster daran anzupassen? Gruß Dude
Hallo! Ah das mit den Spacern is n guter Tip. Hatte mich schon gefragt wofür die sind. Das Tutorium auf kdevelop.org werde ich mir bei Gelegenheit mal antun. Hast mir, wie jedesmal, gut weitergeholfen. Danke dafür! Jetzt hab ich noch eine abschließende Frage: Wie kriege ich das hin, dass mein Programm auch auf anderen Rechnern ohne Qt läuft. Kann ich das so compilieren, dass alles in der exe-Datei steckt oder muss ich die Qt dll separat mitliefern? Hab da irgebdwas von statischem Compilieren gelesen, aber nicht ganz verstanden, wie ich das hinbekomme. Gruß Dude
Was ist denn mit den Beiträgen von Manuel B. (Xitara) passiert? Dort steht bei mir immer nur "(entfernt)"?? Sind die Beiträge zensiert? faust
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.