Anzeige:
Seite 4 von 4 ErsteErste ... 234
Ergebnis 46 bis 55 von 55

Thema: Tutorial zu KParts?

  1. #46
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Iss klar

    Das ganze sieht jetzt ungefähr so aus: (Nicht erschrecken, da ist bestimmt einiges dabei, was dir bekannt vorkommt! )
    Code:
       // Query nach Services unseres ServiceTypes
       offers = KTrader::self()->query( s );
    	
       qDebug("Requesting factory for service " + s );
    	
       svcptr = offers.first();
    	
       if( part != 0L ) {
    	
           qDebug( "... deleting old part ..." );
           delete part;
           part = 0L;
    
           qDebug( "... unloading library ..." );		
           library->unload();
    		
           qDebug( "... done ..." ); 
       }
    
       
       part = 0L;	
       factory = 0L;
    	
       if( svcptr == 0L ) {
    	
          kdDebug() << "No offers for service " << s << endl;
          kdDebug() << "This might be caused by an incomplete installation," << endl;
          kdDebug() << "or by KDE not recognizing the new services." << endl;
    
          factory = 0L;
    
       } else {
    	
          library = KLibLoader::self()->library( ((ModulItem*)lastItem)->library ); 
    		
          if( !library ) {
    		
             qDebug( "Could not create a KLibrary" );
             return;
          }
    		
          factory = library->factory();//KLibLoader::self()->factory( ((ModulItem*)lastItem)->library );//svcptr->library() );
    				
          if( factory == 0L ) {
    		
             qDebug( "Could not create a factory for KTrader's offer!" );
    			
     	 library->unload();
             part = 0L;
          } else {
    		
             factory->setName( "JargoFactory" );
    			
             kdDebug( ) << "Got factory (" << factory << "). Creating KPart..." << endl;
    
                
             KParts::Factory* fac = static_cast<KParts::Factory*>( factory );
                
             part = static_cast<JargoPart*>( fac->createPart( workSpace, "name", this ) );
          }
    }
    Bodo
    Systemadmistration UNIX

  2. #47
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ah, bin ich blind oder wo benutzt du svcptr?

    Btw, wenn du eine eigene Factory Basisklasse hast, von denen die einzelnen PartFactories ableiten, kannst du auch auf die casten
    Und dort zB eine spezielle create Methode haben.
    Ganz praktisch, wenn man den eigenen Parts spezielle Parameter an den Konstruktor übergeben will.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #48
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615
    okay, der Rest noch obendrüber :
    Code:
       QString s = "Jargo/Part";
    
       KTrader::OfferList   offers;
       KService::Ptr        svcptr = 0L;
       
       // Query nach Services unseres ServiceTypes
       offers = KTrader::self()->query( s );
    	
       kdDebug( "Requesting factory for service " + s );
    	
       svcptr = offers.first();
    	
       if( part != 0L ) {
    	
             qDebug( "... deleting old part ..." );
             delete part;
    
    
    .
    .
    .
    Ja, ich dachte mich das schon mit einr eigenen BasisFactory, doch noch habe ich keine Verwendung dafür, oder sehe sie nicht.
    Bodo
    Systemadmistration UNIX

  4. #49
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von TheDodger
    okay, der Rest noch obendrüber :
    Ja, das konnte ich mir schon vorstellen
    Ich meinte, weite unten kommt er nicht mehr vor.
    Du machst nur query, nimmst das erste Angebot, kontrllierst ob != 0 und aus.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #50
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Ja und?
    Muss da noch was folgen?

    Ich mein ... in kmud ist das doch auch so ...
    Geändert von TheDodger (25-10-2002 um 20:18 Uhr)
    Bodo
    Systemadmistration UNIX

  6. #51
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Nein, wir benutzen den Pointer dann:
    Code:
    factory = KLibLoader::self()->factory(svcptr->library());
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #52
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Richtig, ich habe das in der zwischenzeit (wegen library->unload() ) etwas anders gemacht.
    Code:
          library = KLibLoader::self()->library( libName ); 
    		
          if( !library ) {
    		
             qDebug( "Could not create a KLibrary" );
             return;
          }
    		
          factory = library->factory();
    Okay, ich habe jetzt alles was 'KService::Ptr', 'KTrader', 'offers' & 'svcptr' betrifft auskommentiert.
    Läuft auch (was erzeugt man doch für Overhead ...)
    Aber ändert nichts an meinem Problem, daß das Plugin zwar erzeugt, aber nicht dargestellt wird
    Geändert von TheDodger (26-10-2002 um 05:05 Uhr)
    Bodo
    Systemadmistration UNIX

  8. #53
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Hmm, blöde Frage, aber hast du schon show() am Widget des Parts probiert?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  9. #54
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Du weist, das ich blöd bin, oder?

    Ohne Scheiß ... ich hatte es nicht da stehen ... warum auch, beim ersten mal Anzeigen klappte es ja auch ohne show()!

    BTW. wo muß ich jetzt eigentlcih meine signals unterbringen?
    Im JargoPart(), oder Jargo<PluginName>Part() ?

    Ach was, ich probiers ... ich kann ja weiter fragen, wenn's nicht funktioniert
    Geändert von TheDodger (26-10-2002 um 12:25 Uhr)
    Bodo
    Systemadmistration UNIX

  10. #55
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615

    Lightbulb ende gut, alles gut?

    es klappt, es klappt *freu* *freu*
    Bodo
    Systemadmistration UNIX

Lesezeichen

Berechtigungen

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