Anzeige:
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 15 von 34

Thema: Qt3 verstehe nicht wie der QString funktioniert.

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

    Question Qt3 verstehe nicht wie der QString funktioniert.

    Hi alle!

    Ich weis das für Qt 3 software Entwickler ist es üblich das man mit QString arbeitet! Aber ich komme damit nicht klar! Ich versuche mit hilfe von QString information aus schel zu holen
    Code:
    void Form1::buttonClicked() 
    {  
    textEdit1->setText( const QString & )
    }
    Wo soll ich den Shell Befehl (sagen wir mal "set") eintragen?

    Vor mir liegt ein Buch über QT Programmierung, aber da gibt es keine Erklerung wie genau das geht.

    MfG
    chapaev

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Was willst du genau?

    QString ist nur um mit Strings rumzubasteln. Mit der Shell und Umgebungsvariablen (darum gehts dir doch?) hat das so nichts zu tun.

    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)

  3. #3
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    Es gibt die Funktion getenv(). Mit der kannst du Umgebungsvariablen auslesen.
    Hier ist sie beschrieben: http://man.he.net/man3/getenv

    Den Rückgabewert einfach einer QString Variablen zuweisen, wenn du magst.
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

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

    ???

    Mir geht es darum, wie ich shell Befehle ausführen kann und die ausgabe in ein textEdit widget einfügen kann! Wenn das nicht mit QString geht, wie dann?

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

    Ich habe mich wohl nicht ganz klar ausgedruckt

    Ich will bestimmte shell programme ausführen z. B. emerge, apt-get usw. wie bringe ich Qt dazu, dass er es macht? Natürlich wenn es überhaupt geht!

  6. #6
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    Schau dir die Klasse QProcess in der Doku an.
    Das sollte das sein, was du brauchst.
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

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

    Danke!

    Das war genau das was ich brauchte! THX

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

    Wink Hi leute ich bin es wieder!!

    Ich habe noch ein paar fragen.
    ich habe jetzt Qrocess eingebunden.
    Code:
    void EmergeSettings::emerge() 
    {     
    process = new QProcess(this);     
    process->addArgument("emerge");     
    process->addArgument(ebuildFile);     
    process->start(); }
    aber wie mache ich dass QT aus der Ausgabe USE Flags rausholt und danach CheckBoxes erstellt: die Ausgabe siht so aus:

    Calculating dependencies ...done!
    [ebuild R ] kde-base/kdebase-3.3.1 +arts +cups -debug +java -ldap +opengl +pam -samba* +ssl -xinerama* 0 kB

    Total size of downloads: 0 kB
    (die USE Flags sind "+arts +cups -debug +java -ldap +opengl +pam -samba* +ssl -xinerama" )

    Es gibt noch eine andere Möglichkeit. Ich kann die ausgabe in ein Textdatei speichern und von da aus rausfiltern. Aber die erste Methode wehre mir lieber.

    Ich weis dass die Fragen blöd klingen aber ich komme einfach mit QT Assistant nicht klar!

    MfG
    chapaev

  9. #9
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    Es gibt die readStdout() Methoden. Was zurückgeliefert wird steckst du in einen QString, oder in mehrere.
    Wie du diesen String dann zerpflückst ist dein Bier .
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  10. #10
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Du musst zuerst mal einen Slot mit dem readReadStdout Signal des QProcess verbinden, damit du überhaupt weißt, wann du lesen kannst.

    Zum Zerlegen entweder einen QRegExp verwenden, oder zB an "+" in eine QStringList splitten (QStringList::split)

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

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

    hmmm!

    Kann mir jemand erkleren warum es nciht klap die Ausgabe in ein TexteEit zu bekommen: Kompilation gab keine Fehler aus und genauseo stand es in einem Beispiel (fast genauso):
    Code:
    void settingsDlg::emergeProcess() 
    {
         process = new QProcess(this);
         process->addArgument("ls");      
         process->addArgument(" /var/tmp");    
         process->start(); 
         connect( process, SIGNAL(readyReadStdout()),
                 this, SLOT(readFromStdout()) );
    }  
    
    void settingsDlg::readFromStdout() 
    {
         description->append( process->readStdout() ); //deskreption ist ein Textedit widget
    }

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

    Exclamation Hallo Leute ich bin's wieder!

    Ich wollte fragen ob mir jemand ein Beispiel machen kann wie ich aus eine Textdatei (amorok-1.1.ebuild) die DESCRIPTION auslesen kann. Die Datei siht volgendemassen aus:
    Code:
    # Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/media-sound/amarok/amarok-1.1_beta2.ebuild,v 1.1 2004/09/15 21:20:13 eradicator Exp $  
    
    inherit kde eutils  
    
    DESCRIPTION="amaroK is a media player for KDE" 
    HOMEPAGE="http://amarok.kde.org/" 
    SRC_URI="mirror://sourceforge/amarok/${P}.tar.bz2" 
     
    LICENSE="GPL-2" 
    SLOT="0"  
    
    # ppc: please test out libvisual!
    KEYWORDS="~x86 ~ppc ~amd64" 
    
    IUSE="cjk gstreamer xmms opengl xine libvisual noamazon"  
    DEPEND="!ppc? ( >=media-libs/libvisual-0.1.6 ) 	
    arts? ( >=kde-base/kdemultimedia-3.2 ) 	
    gstreamer? ( >=media-libs/gst-plugins-0.8.1 ) 	
    opengl? ( virtual/opengl ) 	
    xmms? ( >=media-sound/xmms-1.2 ) 	
    xine? ( >=media-libs/xine-lib-1_rc4 ) 	
    libvisual? ( >=media-libs/libvisual-0.1.6 ) 	
    >=media-libs/tunepimp-0.3.0 	
    >=dev-util/pkgconfig-0.9.0 	
    >=media-libs/taglib-1.3 	
    >=kde-base/kdelibs-3.2 	
    >=x11-libs/qt-3.3"  
    
    need-kde 3.2 
     
    src_unpack() 
    { 	
    if  ! use gstreamer && ! use xine && ! use arts 	
    then 		
    die "You must enable either Gstreamer, aRts or Xine" 	
    fi  	
    kde_src_unpack  
    }  
    
    src_compile() 
    { 	
    PREFIX="`kde-config --prefix`"  	
    myconf="`use_with arts` `use_with gstreamer`" 	
    myconf="${myconf} `use_with opengl` `use_with xine`"          
    if use noamazon              
       then myconf="$myconf --disable-amazon"         
    fi  	
    
    kde_src_compile myconf configure make || die 
    }
    Übrigens das mit QProcess hat sich irgend wie von selbst erledigt

  13. #13
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    Code:
    QFile* file= new QFile( "/pfad/zu/datei");
    file->open( IO_ReadOnly);
    QString* tempString = new QString();
    
    while ( !file->atEnd() )
    {
        file->readLine( *tempString, 50 );
        if ( tempString->startsWith("DESCRIPTION"))
        {
            // mit tempString->remove(..) alles entfernen, was weg muss
            // jetzt hat tempString nur doch die Description :-)
        }
    }
    So habe ich das mal gemacht. Ersetze die zwei Kommentarzeilen durch Code.

    Kein eigener Prozess mehr notwendig ?
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

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

    Danke!

    Emerge Process ist immer noch notwandig, aber ich überlege mir noch grad wie ich das mache. Ich dechte nur, wenn ich weiß wie ich aus einem Text das rausfiltern kann, dann kann ich das auch aus QProcess rausfiltern
    In Shell wehre das ja kein problem mit "grep" und "sed" aber Qt lehrne ich noch!

    Vielen dank fuer die Hilfe.

  15. #15
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Wenn du den Inhalt schon in einem String hast, kannst du zB mit QString::find und ähnlichen Methoden arbeiten.

    Eine sehr einfache Möglichkeit ist auch, zuerst in eine Liste von Zeilen aufzuspalten und dann die besondere Zeile nochmal am Trennzeichen, in deinem Fall =

    QStringList::split()

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

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