mikrocontroller.net

Forum: PC-Programmierung QT Anfängerfrage


Autor: Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Manuel B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(entfernt)

Autor: Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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&)));

Autor: Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man selbst in ein Widget zeichnen will, überschreibt man dessen
Funktion paintEvent() und erzeugt darin eine Instanz von QPainter.
void MyWidget::paintEvent(QPaintEvent* ev)
{
    QPainter painter(this);
    painter->drawLine(10, 10, 100, 100);
}

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.

Autor: Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: faust (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.