Anzeige:
Ergebnis 1 bis 10 von 10

Thema: klassenübegreifend & QThread

  1. #1
    Registrierter Benutzer Avatar von wodda
    Registriert seit
    12.05.2003
    Ort
    Tirol
    Beiträge
    25

    klassenübegreifend & QThread

    hi!

    es geht nachwievor um eine simple client server anwendung, die voerst dazu dienen soll den inhalt eines MultiLine Objectes zu übertragen. dabei stehe ich wiedermal an.

    in meinem Programm habe ich 2 Klassen (eigentlich mehr mit den Klassen des .ui)

    Code:
    class Chatmini : public FormMain
    sieht alle elemente der FormMain (buttons, MultiLine usw)
    Code:
    class Mysocket : public Chatmini
    ist von Chatmini veerbt.

    Ich habe mir dass jetzt so überlegt:
    in Mysocket wird ein neuer Thread mittel QThread gestartet und der Socket verwaltet.

    Code:
    void Chatmini::b_connect(){
      Mysocket *sock = new Mysocket();
      if (RadioServer->isChecked()) {
         sock->createServer();
      } else { 
         sock->createClient();
      }    
    }
    dies wird richtig ausgeführt und zb. createServer aus der Klasse Mysocket aufgerufen. Von dieser aus kann ich aber keine Elemente mehr der FormMain ansprechen. bzw. ansprechen schon, jedoch ohne auswirkung.
    mittels qWarning weiß ich dass er die funktion wirklich aufruft.

    hat jemand ein bsp für ein ähnliches programm? oder erkennt mein problem?

    danke!
    mfg wodda

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Was ist MySocket?

    Für QSockets brauchts du keine Threads, die arbeiten über Events.

    Falls du da also intern QSocket statt QSocketDevice in Zusammenhang mit Threads benutzt, hast du möglicherweise die Eventloop gelockt.

    Für kleinere Sachen, spezielle für den Client, würde ich auf QSocket raten und Threads mal beseite lassen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer Avatar von wodda
    Registriert seit
    12.05.2003
    Ort
    Tirol
    Beiträge
    25
    hi!

    danke für den hinweis. da war ich wieder mal zu hastig.
    weiß jedoch an einem punkt nicht mehr weiter...

    wie schon gesagt, setzt sich mein programm aus folgenden Klassen zusammen:

    MainForm // erstellter Dialog vom designer
    Chatmini // hauptform
    SimpleServer // erstellt einen einfachen server mittel Qserversocket und Qsocket

    ich habe es geschafft, dass der server läuft, und das gui dabei nicht stehen bleibt.
    jedoch würde ich gern die informationen die der server (vorerst vom telnet) erhaltet gerne sichtbar machen zb. multiline element.

    Jedoch weiß ich nicht wie ich drauf zugreiffen kann. Habe es mit "friend class" probiert und mit MainForm form = new MainForm();
    form->MultiLineDebug->insertLine("Disconnect client....");
    wobei der Compiler dies schluckt. Aber ich das Ergebniss nicht sehe.

    hat jemand einen Rat?

    thx,
    wodda

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Hmm, so allgemein kann ich da nix sagen, ich bräuchte bischen mehr Code

    Vielleicht kannst du ein kleines tgz erstellen und an ein Posting anhängen?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer Avatar von wodda
    Registriert seit
    12.05.2003
    Ort
    Tirol
    Beiträge
    25
    hier :-)

    thx!

  6. #6
    Registrierter Benutzer Avatar von wodda
    Registriert seit
    12.05.2003
    Ort
    Tirol
    Beiträge
    25
    hi!

    habe es geschafft einen client mit einem server eine verbindung zu erstellen lassen, wobei beides so weit eingebaut ist.
    Server + Client haben jeweils eigenen klassen.
    Mein Problem ist jetzt natürlich, wie ich aus zb. der Clientklasse auf die wesentlichen GUI elemente wie die MultiLine Elemente zugreifen kann. (auslesen, und neuen inhalt hineinschreiben)

    und auch wie ich zb. mit dem senden button die senden funktion der clientklasse richtig aufrufe?

    ich habs neue einmal angehängt, und wäre über jede hilfe extrem dankbar.
    Das problem ist, dass es am besten schon montag in der früh zum ein "bisschen" vorführen reichen sollte

    thx,
    wodda

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von wodda
    Mein Problem ist jetzt natürlich, wie ich aus zb. der Clientklasse auf die wesentlichen GUI elemente wie die MultiLine Elemente zugreifen kann. (auslesen, und neuen inhalt hineinschreiben)
    Das ist meiner Meinung nach die falsche Richtung.
    Besser du schaffst eine Möglichkeit, wie die GUI Klasse auf den Socket zugreifen kann.

    Wenn du als Client operierst, dann hast du eh den Client Socket direkt durch das anlegen.
    Wenn du als Server operierst, mach den neuen Socket doch einfach über ein Signal bekannt. Du kannst den Pointer auf den Socket als Parameter in deinem newConnect Signal transportieren.


    und auch wie ich zb. mit dem senden button die senden funktion der clientklasse richtig aufrufe?
    Nun, falls die Senden Funktion ein parameterloser Slot ist, brauchst du nur das Signal clicked() des Buttons mit dem Slot verbinden.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  8. #8
    Registrierter Benutzer Avatar von wodda
    Registriert seit
    12.05.2003
    Ort
    Tirol
    Beiträge
    25
    hi!

    danke für die tipps, könntest du vielleicht ein kurzes bsp für einen ansatz posten?

    thx,
    wodda

  9. #9
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von wodda
    hi!

    danke für die tipps, könntest du vielleicht ein kurzes bsp für einen ansatz posten?
    schon passiert
    http://www.mrunix.de/forums/showthre...threadid=32097

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  10. #10
    Registrierter Benutzer Avatar von wodda
    Registriert seit
    12.05.2003
    Ort
    Tirol
    Beiträge
    25
    wahnsinn!

    danke :-)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •