signale beim qtdesigner

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Maggy
User
Beiträge: 2
Registriert: Samstag 31. Januar 2009, 13:06

signale beim qtdesigner

Beitragvon Maggy » Samstag 31. Januar 2009, 13:12

Hi,

ich habe im QtDesigner ein QDialog erstellt. Dazu zwei QLineEdits
und einen QTextBrowser.
Mit welchen Signalen kann ich die Texte, die in die QLineEdits
eingegeben werden mit dem QTextBrowser verbinden, sodass
die Texte dort angezeigt werden?

Danke im Vorraus,
Maggy
Panke
User
Beiträge: 185
Registriert: Sonntag 18. März 2007, 19:26

Beitragvon Panke » Samstag 31. Januar 2009, 14:10

Hast du mal in die Doku geguckt? Zum Beispiel hier unter Signals?
Maggy
User
Beiträge: 2
Registriert: Samstag 31. Januar 2009, 13:06

danke

Beitragvon Maggy » Samstag 31. Januar 2009, 17:01

hab nichts gefunden, was mich weiter bringen würde
Benutzeravatar
xWolf
User
Beiträge: 62
Registriert: Sonntag 2. November 2008, 01:21
Wohnort: China

Re: danke

Beitragvon xWolf » Donnerstag 12. März 2009, 23:27

Maggy hat geschrieben:hab nichts gefunden, was mich weiter bringen würde


Hallo,
Ja diese Doku hasse ich. Da werden einem nur Brocken hingehauen ohne konkrete Beispiele oder Erklaerungen. Ohne Informatikstudium ist man da fast chancenlos.

Also hier ein Codeschnipsel:

Code: Alles auswählen

class Suche(QtGui.QDialog, Dlg):
   def __init__(self, GVar):
      QtGui.QDialog.__init__(self)
      self.setupUi(self)   
      .
      .
      self.connect(self.txtStichwort, QtCore.SIGNAL("textChanged()"), self.StichwortAenderung)


txtStichwort ist ein Texteingabefeld, wie bei Dir das LineEdit.
StichwortAenderung eine Routine, die bei Aenderung des Inhaltes des Textes (schreiben...) eine von mir gewuenschte Aktion ausloest.

Also in der letzten Zeile wird das Signal "textChanged()" abgefangen und wenn dieses Signal eintritt zu einer Routine mit dem Namen
self.StichwortAenderung verzweigt.
Bei Dir muesste dann halt dort Programmcode stehen um Deinen Textbrowser zu beladen.

gruss Wolf
DasIch
User
Beiträge: 2402
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Donnerstag 12. März 2009, 23:36

Wenn schon nicht PEP 8 dann würde ich wenigstens einen konsistenten Codestil verwenden.
jerch
User
Beiträge: 1622
Registriert: Mittwoch 4. März 2009, 14:19

Beitragvon jerch » Freitag 13. März 2009, 01:51

@DasIch
[ohne worte]

@Maggy
On-the-fly, also während des Schreibens im LineEdit gehts so wie xWolf angedeutet hat, mit textChanged(), z.B. kannst Du den Text einfach anhängen lassen:

Code: Alles auswählen

QtCore.QObject.connect(self.lineEdit, QtCore.SIGNAL("textChanged(QString)"), self.textBrowser.append)

Wahrscheinlich willst Du aber eher auf ein <enter> im LineEdit warten, um dann den Text abzusetzen. Dann brauchst Du eine Methode, die sich den Text holt, und im Browser einfügt, da das returnPressed()-Signal den Text nicht übergibt. Ungefähr so:

Code: Alles auswählen

...
def __init__(...):
    ...
    QtCore.QObject.connect(self.lineEdit, QtCore.SIGNAL("returnPressed()"), self.holeText)
...
def holeText(self):
    self.textBrowser.append(self.lineEdit.text())

Leider hat sich Riverbank nicht gerade mit Ruhm bekleckert, als die ihre Dokumentation geschrieben haben. Für jmd. ohne Grundkenntnisse in C++ sind schon die kleinsten Beispiele sehr schwer zu durchschauen.
Benutzeravatar
xWolf
User
Beiträge: 62
Registriert: Sonntag 2. November 2008, 01:21
Wohnort: China

Beitragvon xWolf » Freitag 13. März 2009, 03:26

Leider hat sich Riverbank nicht gerade mit Ruhm bekleckert, als die ihre Dokumentation geschrieben haben. Für jmd. ohne Grundkenntnisse in C++ sind schon die kleinsten Beispiele sehr schwer zu durchschauen.


Genau meine Meinung

Wolf
Benutzeravatar
xWolf
User
Beiträge: 62
Registriert: Sonntag 2. November 2008, 01:21
Wohnort: China

Beitragvon xWolf » Freitag 13. März 2009, 03:33

DasIch hat geschrieben:Wenn schon nicht PEP 8 dann würde ich wenigstens einen konsistenten Codestil verwenden.


Was verstehst Du darunter?

Konsitenz: Wikipedia =
Das Wort Konsistenz (lateinisch: con = zusammen + sistere = halten) bedeutet Bestand, Zusammenhalt, Geschlossenheit und In-sich-Ruhen.


Deine Definition nun?
Stein des Weisen gefunden oder Informatiker/Philosoph?

Wolf
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 13. März 2009, 10:03

Wikipedia hat geschrieben:Konsistenz im weiteren Sinn bezieht sich auf den logischen, hermeneutischen, funktionalen oder ästhetischen Bestand eines Gegenstandes (z. B. eines Textes, eines Begriffs, einer Methode oder Technik, eines Werkzeugs oder eines Kunstwerks), der in sich stimmig ist
My god, it's full of CARs! | Leonidasvoice vs Modvoice
DasIch
User
Beiträge: 2402
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Freitag 13. März 2009, 15:32

xWolf hat geschrieben:Was verstehst Du darunter?

Du benennst Methoden nach dem selben Schema wie Klassen, dass ist dumm da man nicht mehr auf dem ersten Blick sieht womit man es gerade zu tun hat.
lunar

Beitragvon lunar » Freitag 13. März 2009, 15:45

DasIch hat geschrieben:
xWolf hat geschrieben:Was verstehst Du darunter?

Du benennst Methoden nach dem selben Schema wie Klassen, dass ist dumm da man nicht mehr auf dem ersten Blick sieht womit man es gerade zu tun hat.

Das ist mit Sicherheit wenig sinnvoll, aber hat wenig mit Konsistenz zu tun. Inkonsistent wäre es, kein einheitliches Namensschema auf Methoden anzuwenden. So gesehen ist das Namensschema von xwolf nicht nur wenig sinnvoll, sondern zudem noch inkonsistent, weil er sich bei der Benennung von Methoden weder nach PEP 8 noch nach PyQt4 selbst richtet :)
Benutzeravatar
xWolf
User
Beiträge: 62
Registriert: Sonntag 2. November 2008, 01:21
Wohnort: China

Beitragvon xWolf » Samstag 14. März 2009, 20:47

DasIch hat geschrieben:Du benennst Methoden nach dem selben Schema wie Klassen, dass ist dumm da man nicht mehr auf dem ersten Blick sieht womit man es gerade zu tun hat.


ich wuerde gern lernen.
Sag mir wo in meinem Mini-Codeschnipsel der "Fehler" liegt.
DasIch
User
Beiträge: 2402
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Samstag 14. März 2009, 21:33

Zeile 8: self.StichwortAenderung
Benutzeravatar
xWolf
User
Beiträge: 62
Registriert: Sonntag 2. November 2008, 01:21
Wohnort: China

Beitragvon xWolf » Samstag 14. März 2009, 22:38

DasIch hat geschrieben:Zeile 8: self.StichwortAenderung


Gut, und wo ist nun der Haken daran?

self.txtStichwort ist ein Textfeld in dem ein Stichwort steht.
self.StichwortAenderung ist die Routine, die ausgefuehrt wird, wenn sich im o.g. Textfeld was aendert.
Das finde ich irgendwie logisch, aber Irren ist menschlich. :wink:

Wie wuerdest Du diese Routine nennen?

Danke

Wolf
lunar

Beitragvon lunar » Samstag 14. März 2009, 22:43

Ohne Vorahnung würde ich mich an den Namenskonventionen der verwendeten Bibliothek orientieren, schon allein, um Konsistenz zu erreichen. Das wäre logisch. Und es ist auch logisch, dass identische Namensgebung für Klassen und Methoden zu Verwirrung führt.

Im Allgemeinen aber ist PEP 8 der Styleguide für Python, den es zu beachten gilt.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder