Anzeige:
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 16 bis 30 von 34

Thema: Qt3 verstehe nicht wie der QString funktioniert.

  1. #16
    Registrierter Benutzer
    Registriert seit
    05.06.2004
    Ort
    mainaschaff
    Beiträge
    109

    Und noch eine Frage

    Ich habe (einfach als test) volgende code:

    Code:
     QStringList list;
        list << "+arts" "+cups" "-debug" "+java" "-ldap" "+opengl" "+pam";
        list = list.grep( "+" );
    die Frage ist: wie leite ich die Ausgabe in ein TextEdit?
    Ich habe schon alles ausprobiert
    Code:
    TextEdit -> list;
    TextEdit << list;
    TextEdit -> setText(lsit);
    TextEdit -> append(list->show());
    Bekomme immer ein Fehlermeldung! Im buch über qt stehen keine andere Methoden(jedenfals habe ich keine entdeckt).

  2. #17
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zum Darstellen mußt du die StringList schon wieder zu einem String zusammenfügen, die Methode setText kann schließlich nur einen QString nehmen.

    QStringList::join wenn du alle Teile in der StringList im Ergebnis haben willst.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #18
    Registrierter Benutzer
    Registriert seit
    05.06.2004
    Ort
    mainaschaff
    Beiträge
    109

    Unhappy Ich kapiere immer noch nicht!

    Kannst du mir bitte auch ein Beispiel zeigen? Ich sitze nemlich schon den ganzen Tag rum und teste verschiedene Möglichkeiten wie das gehen könnte, aber es klappt einfach nicht. Ich denke QT ist doch zu schwer für mich, es ist nciht vergleichbar mit basic und shell!

  4. #19
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Sowas?

    Code:
    QStringList list;
        list << "arts" << "cups" << "-debug" << "+java" << "-ldap" << "+opengl" << "+pam";
        list = list.grep( "+" );
    
    textEdit.setText(list.join(" "));
    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #20
    Registrierter Benutzer
    Registriert seit
    05.06.2004
    Ort
    mainaschaff
    Beiträge
    109

    Hmmmm!

    Ich habe schon öffters diese Methode gesehen:
    Code:
    description.setText(list.join(" "));
    Aber ich verstehe nicht wo die Unterschied ist? Ob ich das mache:
    Code:
    description->setText(list.join(" "));
    oder das:
    Code:
    description.setText(list.join(" "));

  6. #21
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Da ist ansich kein Unterschied im Methodenaufruf, es ist immer setText(const QString&)

    Die unterschiedliche Notation ist auf den Typ des Objekts zurück zuführen.
    bei "->" liegt es als Pointer auf eine Instanz vor, bei "." ist es direkt die Instanz.

    Widgets werden praktisch (fast) immer mit "new Kontruktor()" erzeugt, daher wird bei Methodenaufrufen an Widgets auch immer "variable->methode()" benutzt.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #22
    Registrierter Benutzer
    Registriert seit
    05.06.2004
    Ort
    mainaschaff
    Beiträge
    109

    Wieder ein Fehler?

    Code:
    void settingsDlg::init()
    {
        settingsBox->hide();
        
        QFile* file= new QFile( "/home/chapaev/Documents/amarok/amarok-1.1.ebuild");
        file->open( IO_ReadOnly);
        QString* tempString = new QString();
    
        while ( !file->atEnd() )
        {
        file->readLine( *tempString, 50 );
        if ( tempString->startsWith("DESCRIPTION"))
            {
     
               tempString->remove( " " );
               description->setText(tempString.join(""));
           }
       } 
    }
    so wei ich das verstanden habe, funktioniert das nur bei QStringList (ich meine das mit join())
    Wie kann ich das dann in diesem Fall machen? Und wo soll ich das nachschlagen (Qt Assistant), bei dem QString oder dem Qfile?

  8. #23
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    ein
    delete tempString;
    wäre eine gute Idee. Aber du brauchst hier gar nicht mit Pointern arbeiten.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  9. #24
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von chapaev
    so wei ich das verstanden habe, funktioniert das nur bei QStringList (ich meine das mit join())
    Würde hier ja auch keinen Sinn machen
    Join macht ja aus den Elementen der Liste einen String, hier hast du schon einen String.

    Wie kann ich das dann in diesem Fall machen?
    Da du einen String Pointer hast, musst du den natürlich zuerst dereferenzieren.

    Und wo soll ich das nachschlagen (Qt Assistant), bei dem QString oder dem Qfile?
    In einem Buch über C++ Grundlagen, bzw. nur mit Pointern arbeiten, wenn das auch nötig ist.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  10. #25
    Registrierter Benutzer
    Registriert seit
    05.06.2004
    Ort
    mainaschaff
    Beiträge
    109

    Langsam fange ich an Qt zu verstehen!

    So wie ich das verstanden habe, besitzt QString in diesem Fall kein "Text".

    Code:
     void settingsDlg::readFromEbuild()
    {
        QFile* file= new QFile( ebuildSelected->text() );
        file->open( IO_ReadOnly);       
        QString* tempString = new QString();
        while ( !file->atEnd() )
      {
                  file->readLine( *tempString, 50 );
                  description->setText(tempString.asii());
       }
    }
    Weil wenn ich das mache:
    Code:
     void Form1::lessStart()
    {    
        QString str = "parts pro toto";
        outputLabel->setText(str);
    }
    klappt alles.

    Die frage ist nun: wie wandele ich tempString zu einem Text um?
    Im Qt Buch steht zwar zimlich viel über QStrings, aber ist alles immer das selbe
    Code:
    QString str = "bla bla"


    Kann mir jemand ein Beispiel zeigen wei ich den tempString (code 1) in einem textEdit ausgeben kann? Ich habe schon semtliche Möglichkeiten ausprobiert. Hat leider nichts gebracht

    PS: Übrigens im Buch (QT) habe ich nichtst über Pointern gefunden.

  11. #26
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von chapaev
    So wie ich das verstanden habe, besitzt QString in diesem Fall kein "Text".
    Würde keinen Sinn machen, der String ist ja der Text.

    Die frage ist nun: wie wandele ich tempString zu einem Text um?
    tempString ist hier unnötigerweise ein Pointer auf einen String, setText erwartet aber den String selbst.
    Dazu müsste man den Stringpointer zuerst derefernzieren, aber besser wär, gleich eine normale Stringvariable zu benutzen und keinen Pointer.
    Selbiges für QFile, falls du es nur in dieser Methode brauchst.

    Kann mir jemand ein Beispiel zeigen wei ich den tempString (code 1) in einem textEdit ausgeben kann? Ich habe schon semtliche Möglichkeiten ausprobiert. Hat leider nichts gebracht
    Nachdem du vermutlich den gesamten Fileinhalt anzeigen willst, geht das am einfachsten so
    QFile file("dateiname);
    if (file.open(IO_ReadOnly))
    {
    QString text = file.readAll();
    textedit->setText(text);
    }
    PS: Übrigens im Buch (QT) habe ich nichtst über Pointern gefunden.
    Im Qt Buch wird auch die Kenntnis von C++ Grundlagen vorrausgesetzt, denke ich mal.
    Ein Pointer auf eine Instanz einer Qt Klasse ist schließlich nicht anders als ein Pointer auf eine andere C++ Klasse, darum auch nicht extra veschrieben.
    Dort wo es Unterschiede zur generellesn C++-Vorgangsweise gibt, wird das auch angeführt (zB automatisches freigeben von QObject Instanzen durch ihre Parents)

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  12. #27
    Registrierter Benutzer
    Registriert seit
    05.06.2004
    Ort
    mainaschaff
    Beiträge
    109

    QString in linien splitten

    anda_skoa, peschmae und Boron, erst möchte ich euch allen danke sagen!

    Im Qt Buch wird auch die Kenntnis von C++ Grundlagen vorrausgesetzt, denke ich mal.
    Ach so! deshalb kapiere ich alles so langsam
    Dann besorge ich mir mal ein Buch über C++.

    Ich will euch natürlich nicht nerven, aber ich komme nicht weiter.
    Damit splitte ich QString in wörter:

    Code:
     QFile file( ebuildSelected->text() );
    if (file.open(IO_ReadOnly))
         {
        QString fileInhalt = file.readAll();
        QStringList list = QStringList::split( " ", fileInhalt );
        list = list.grep( "DESK" );
        description->setText( list.join( " " ) );
         }
    Was kann ich anstatt " " (split( " ", fileInhalt )) nehmen?
    Wie ich festgestellt habe, mit "\n" klappt es nicht!

  13. #28
    Registrierter Benutzer
    Registriert seit
    05.06.2004
    Ort
    mainaschaff
    Beiträge
    109

    Wink Hat sich erledigt!

    Das oben beschriebene brauche ich nicht mehr, hab eine FAQ für C Probrammierung gefunden!

    Ich habe nur eine Frage, warum hat mir kine gesagt das mit pointer arbeiten das selbe ist wie mit Strings nur mit *

    MfG
    chapaev

  14. #29
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von chapaev
    Das oben beschriebene brauche ich nicht mehr, hab eine FAQ für C Probrammierung gefunden!

    Ist aber mit Vorsicht zu genießen, C Sachen sind nicht immer auf C++ übertragbar, bzw. gibt es in C++ oft einfachere Lösungen.

    Ich habe nur eine Frage, warum hat mir kine gesagt das mit pointer arbeiten das selbe ist wie mit Strings nur mit *
    Äh, was?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  15. #30
    Registrierter Benutzer
    Registriert seit
    05.06.2004
    Ort
    mainaschaff
    Beiträge
    109

    Lightbulb

    Zitat:
    Ich habe nur eine Frage, warum hat mir kine gesagt das mit pointer arbeiten das selbe ist wie mit Strings nur mit *


    Äh, was?
    Es ist doch so, wenn man ein String in ein Pointer verwandelt, alles was sich ändert ist *!
    z. B. String: textEdit->setText(string)
    Pointer: textEdit->setText(*string)

    Ich habe ein Problem mit utf8 und zwar:
    Code:
     inputStr.replace("A", "А");
    inputStr.replace("a", "а");
    ......
    .....
    .....
           outText->setText(inputStr.utf8());
    Wieso bekomme ich am ende anstatt utf komische Zeichen?

Lesezeichen

Berechtigungen

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