IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

de Object-C vers Qt4


Sujet :

Qt

  1. #1
    Membre confirmé Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut de Object-C vers Qt4
    Salut ,
    Je veux savoir Est ce qu'il est possible de transformer un programme écrit en
    Object-C au Qt4 ?
    le programme Object-C utilise les classes de Webkit suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #import <WebKit/WebKit.h>
    	#import <WebKit/DOMCore.h>
    	#import <WebKit/DOMEvents.h>
    	#import <WebKit/DOMEventTarget.h>
    	#import <WebKit/DOMTraversal.h>
    merci d'avance pour tout aide,

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par GoldenEyes Voir le message
    Salut ,
    Je veux savoir Est ce qu'il est possible de transformer un programme écrit en
    Object-C au Qt4 ?

    comment cela???

  3. #3
    Membre éclairé Avatar de dorian833
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 223
    Par défaut
    En C++ pourquoi pas mais pas en une librairie même si Qt est assez complète et bien conçue (à mon gout).

    En supposant que ce soit vers du C++ que tu veuilles traduire ton code, dans ton exemple, il suffit de remplacer les "import" par des "include" et sa roule (enfin pour cette partie).

    Après, tu dois sûrement avoir des classes à traduire en C++ ainsi que le reste du soft.

  4. #4
    Membre confirmé Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut
    salut ,
    merci pour la réponse ,

    j'ai un programme en Object-c qui fait l'extraction des urls ou ils ont utilisé des classes que je n'ai les pas trouvé sous Qt4 par exemeple :
    DOMMouseEvent
    DOMNodeIterator .. ect

    voila une fonction compléte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    - (void) traverse: (DOMDocument*) doc {
    	DOMNodeIterator *iter = [doc createNodeIterator:[doc firstChild] whatToShow:DOM_SHOW_ALL filter:nil expandEntityReferences:NO];
    	DOMNode* node;
    	while ((node = [iter nextNode]) != nil) {		
    		DOMMouseEvent *evt = (DOMMouseEvent*)[doc createEvent:@"MouseEvent"];
    		[evt initMouseEvent:@"click"canBubble:TRUE cancelable:TRUE view:[doc defaultView]  detail:0 screenX:0 screenY:0 clientX:0 clientY:0 ctrlKey:FALSE altKey:FALSE shiftKey:FALSE metaKey:FALSE button:0 relatedTarget:nil];
    		[node dispatchEvent: evt];
    		if ( [[node localName] isEqualToString: @"frame"] ) {
    			DOMHTMLFrameElement *frame = (DOMHTMLFrameElement*)node;
    			[self traverse:[frame contentDocument]];
    		}
    	}
    }
    vous pouvez m'aider ? je veux savoir s'il est possible d'écrire cette fonction avec qt4 ?
    merci d'avance pour tout aide ,

  5. #5
    Membre éclairé Avatar de dorian833
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 223
    Par défaut
    Je pense que c'est tout a fait réalisable avec Qt4.

    Ton code se sert de quelle librairie ?

    Par contre les 2 classes :
    - DOMMouseEvent
    - DOMNodeIterator

    ne sont effectivement pas présentes, en tout cas pas sous ce nom.

    Ces 2 classes ont quel rôle (en gros) ?

    Par contre, je n'ai pas bien compris le rôle de ton code ??

    Ta fonction extrait des URLs du document doc ? Si oui, quelle est la relation avec la souris (DOMMouseEvent) ?

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Tu n'avais pas trouvé une solution???
    ou l'on transforme le html et bon xml et que l'on parce ensuite???

  7. #7
    Membre confirmé Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut
    merci pour les reponses

    le code fait l'extraction des URLs d'une page web c'est pour ça nous avons besoin de parcourir le document,
    DOMNodeIterator permet de faire représentation de l'arborescence DOM,
    et DOMMouseEvent est pour effectuer un clique de sourie sur les noeuds de chaque frame(simulation de clique ) ,
    cet événement à une durée de vie et un résultat.

    est ce qu'il est existe une fonction similaire a celle de DOMMouseEvent sous Qt4 ?
    merci d'avance pour tout aide ,

  8. #8
    Membre éclairé Avatar de dorian833
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 223
    Par défaut
    Citation Envoyé par GoldenEyes Voir le message
    DOMNodeIterator permet de faire représentation de l'arborescence DOM
    Sa, pas de problème, il y a ce qu'il faut sous Qt.

    Citation Envoyé par GoldenEyes Voir le message
    DOMMouseEvent est pour effectuer un clique de sourie sur les noeuds de chaque frame(simulation de clique ) ,
    cet événement à une durée de vie et un résultat.
    C'est là que je ne suis plus : l'arborescence est visible ou pas ?

    Sinon, avec une requète QXmlQuery, il sera assez facile de faire une liste des liens contenus dans la page

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    J'y comprend plus rien.
    t'avais pas trouvé une solution??????

    Le gros problème est que le html n'est pas souvent du xml valide.
    Et donc ca ne marche pas avec Qt.
    Seulement on avais trouvé une solution qui convertis le html en xml valide.

    http://www.developpez.net/forums/d54...manque-noeuds/

  10. #10
    Membre éclairé Avatar de dorian833
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 223
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    J'y comprend plus rien.
    t'avais pas trouvé une solution??????
    Moi ?

    Si oui, si effectivement ce morceau de code ne fait "que" lister toute les urls d'une page (si elle sont dans un format XML valide, il se peut que QXmlQuery fonctionne avec des documents non valides), je vois comment faire (mais pas de code pour le moment ^^).

    Le problème est ce DOMMouseEvent, il sert a quoi ? on affiche directement le résultat quelque part ?? si oui où ? si non, bin je vois vraiment pas à quoi sert ce DOMMouseEvent :/

  11. #11
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par dorian833 Voir le message
    Moi ?
    non non, je parle de GoldenEyes.

    Le lien que je donne est un ancien thread sur ce problème posé par lui avec une solution.

  12. #12
    Membre confirmé Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut
    salut,
    merci pour les réponses ,

    oui j'ai reglé le probleme de construir l'arbre dom et d'extraire tout les liens d'une page web avec 2 méthodes,

    -la premiere de valider le code html utilisant tidy puis parcour l'arbre dom
    -la deuxieme injecter un code javascript qui fait le parcour de l'arbre dom d'une page web (sans quelle soit valide )

    mais toujour j'ai pas reglé mon probleme fondamental c'est de faire l'extration des liens qui se trouvent dans le code javascript
    c'est pour cela mon colégue à developper une application est qui à réusi de le faire mais avec Object-c sous mac ,
    et je doit refaire son code avec Qt4 sous ubuntu ,je veux savoir s'il possible de le faire sinon pour passer à un autre langage,
    pour le role de "DOMMouseEvent" j'ai traduit ce qu'il a ecrit comme commentaire dans le code,et d'aprés ce que j'ai compri , j'ai jamais programmer avec Object-c.

    voila son code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
     
    //
    //  webman.m
    //  webkitexplorer
    //
    //  Created by mark williamson on 09/09/2008.
    //  Copyright 2008 hanzo archives. All rights reserved.
    //
     
    #import "webman.h"
     
     
    @implementation webman
     
    -(void) awakeFromNib {
    	// we don't need a page history and it uses resources
    	//[wv setMaintainsBackForwardList:NO];
    	// this is just me being lazy - got bored of typing in a 
    	// test url
    	[urlin setStringValue:@"http://www.dronten.nl/"];
    	[clicks setEnabled:NO];
    }
     
    // clear the text area
    - (void) clearText {
    	NSAttributedString *s = [[NSAttributedString alloc] initWithString: @""];
    	[[otext textStorage] setAttributedString: s ];
    }
     
     
    // simple util to shove a string at the end of my output text
     
    - (void) appendString: (NSString *) str {
    	NSRange endRange; 	
    	endRange.location =[[otext textStorage] length];
    	endRange.length = 0;	
    	[otext replaceCharactersInRange:endRange withString: str ];	
    }
     
    // shove a red string in
     
    - (void) appendRedString: (NSString *) str {
    	NSRange endRange; 	
    	endRange.location =[[otext textStorage] length];
    	endRange.length = 0;	
    	[otext replaceCharactersInRange:endRange withString: str ];	
    	endRange.length = [str length];
    	[otext setTextColor:[NSColor redColor] range: endRange];
    }
     
    // the only way to load a page. Clicking is disabled the second we have 
    // the page loaded
     
    - (IBAction) doGo: (id) sender {
    	NSURL *urltogo = [NSURL URLWithString:[urlin stringValue]];	
    	[self clearText];
    	[self appendRedString:@"requesting...\n"];
    	[clicks setEnabled:NO];
    	loaded=FALSE;
    	partcount=0;
    	[[wv mainFrame] loadRequest:[NSURLRequest requestWithURL:urltogo]];	
     
     
    }
     
    // these are the page assets. It picks up all the stuff for XML as well and javascript 
    // requests etc. so these are all valuable
     
    - (id)webView:(WebView *)sender 
    identifierForInitialRequest:(NSURLRequest *)request fromDataSource:(WebDataSource 
    							             *)dataSource 
    { 
    	NSString *urls = [NSString stringWithFormat: @" %@ \n" , [[request URL] absoluteString]];
    	[self appendString:urls];
    	return [NSNumber numberWithInt:resourceCount++]; 
    }
     
    // not getting the error message for some reason
     
    - (void)webView:(WebView *)sender didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame {
    	NSString *es = [NSString stringWithFormat: @"Unable to load\n%@\n" , [error localizedDescription] ];
    	[self appendRedString:es];
    }
     
    - (void)webView:(WebView *)sender didReceiveServerRedirectForProvisionalLoadForFrame:(WebFrame *)frame {
    	// not sure if this is relevant but keeping an eye out for it
    	[self appendRedString: @"redirecting....\n" ];	
    	redirect = TRUE;
    }
     
    - (void)webView:(WebView *)sender 
     willPerformClientRedirectToURL:(NSURL *)URL 
    						  delay:(NSTimeInterval)seconds 
    					   fireDate:(NSDate *)date 
    		               forFrame:(WebFrame *)frame {
    	// not sure if this is relevant but keeping an eye out for it	
    	[self appendRedString: @"redirecting....\n" ];		
    	redirect = TRUE;	
    }
     
    // pages can be made up of parts (frames) - count them in 
     
    - (void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame {	
    	[self appendRedString: @"start page load\n" ];		
    	partcount += 1;
    }
     
    // and count them out. When they are all done we are loaded
     
    - (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame {	
    	[self appendRedString: @"page loaded\n" ];		
    	partcount -= 1;
    	if ( partcount == 0 && !redirect) {
    		loaded=TRUE;
    		[clicks setEnabled:YES];
    	}
    	if (partcount == 0 && redirect ) {
    		redirect=FALSE;		
    	}
    }
     
    // once we are loaded we don't want  to let clicks work - all we are interested in 
    // is the url of the request
     
    - (void) webView:(WebView *)sender 
    	decidePolicyForNavigationAction:(NSDictionary *)actionInformation 
    							request:(NSURLRequest *)request 
    							  frame:(WebFrame *)frame 
    				   decisionListener:(id)listener { 
    	NSString *reqs = [NSString stringWithFormat: @"%@ \n" , [[request URL] absoluteString]];
    	[self appendString:reqs];
    	if (!loaded) {
    		[listener use];		
    	} else {
    		[listener ignore];
    	}
    } 
     
    // we need to traverse the document
    // the DOMNodeIterator gets us a flattened representation of the DOM tree 
    // which is all we need for now
    // Frames are nested documents though so we detect these and recurisvely all this function
    //
    // We make a new mouse click event for each node - the event has a life time and a result as far as I can tell
    // so it is not reusable 
    //
    // note as well that I rely on the OS X 1.5 garbage collector rather than doing any object managment
    // 
     
    - (void) traverse: (DOMDocument*) doc {
    	DOMNodeIterator *iter = [doc createNodeIterator:[doc firstChild] whatToShow:DOM_SHOW_ALL filter:nil expandEntityReferences:NO];
    	DOMNode* node;
    	while ((node = [iter nextNode]) != nil) {		
    		DOMMouseEvent *evt = (DOMMouseEvent*)[doc createEvent:@"MouseEvent"];
    		[evt initMouseEvent:@"click"canBubble:TRUE cancelable:TRUE view:[doc defaultView]  detail:0 screenX:0 screenY:0 clientX:0 clientY:0 ctrlKey:FALSE altKey:FALSE shiftKey:FALSE metaKey:FALSE button:0 relatedTarget:nil];
    		[node dispatchEvent: evt];
    		if ( [[node localName] isEqualToString: @"frame"] ) {
    			DOMHTMLFrameElement *frame = (DOMHTMLFrameElement*)node;
    			[self traverse:[frame contentDocument]];
    		}
    	}
    }
     
    // this is the function called by the 'clicks' button 
    // we dig our DOMDocument reference out of the webkit and traverse it 
    // displaying a little bit of progress information before and afterwards
    // 
    // Note that the DOM we are playing with here is the same as the one available inside the browser in javascript 
    // the big difference in this app is that we are able to constrain and listen to the embeded browser using the policies and 
    // the delegates
     
    - (IBAction) doClicks: (id) sender {
    	[self appendRedString:@"clicks...\n"];
    	DOMDocument *doc = [[wv mainFrame] DOMDocument]; 
        [self traverse:doc ];				
    	[self appendRedString:@"done\n"];	
    }
     
     
     
     
    @end
    merci pour tout aide ,

Discussions similaires

  1. Migration vers Qt4
    Par mercure07 dans le forum Qt
    Réponses: 9
    Dernier message: 20/12/2009, 15h13
  2. List vers un object de navigation
    Par gufra dans le forum Langage
    Réponses: 2
    Dernier message: 19/11/2007, 16h32
  3. Migration vers business objects XI
    Par valauga dans le forum Administration-Migration
    Réponses: 4
    Dernier message: 03/04/2007, 11h22
  4. [C#] Conversion implicite de type object vers int
    Par alexking2005 dans le forum C#
    Réponses: 5
    Dernier message: 02/01/2007, 10h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo