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 :

Portage de Windows vers Linux


Sujet :

Qt

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 252
    Points : 272
    Points
    272
    Par défaut Portage de Windows vers Linux
    Bonjour,

    j'ai repris un vieux code développé en Qt4.8 à partir du livre avec lequel j'ai découvert Qt [Qt4 et C++ - programmation d'interfaces GUI]. Le code a été développé sous Windows, puis pendant mes actuelles vacances, je l'ai amélioré et testé en Qt 5.7. A priori, il est difficilement portable en Linux. Je ne l'avais jamais vérifié en Linux. C'est la première fois que je me heurte à un tel problème. J'ai déjà différencié des codes sous divers OS par exemple pour la recherche du "HD serial number" mais là je ne m'attendais à rencontrer ce problème.

    L'objet est un délégué de QTableView pour afficher du HTML.
    Nom : 011.PNG
Affichages : 206
Taille : 58,5 Ko

    La partie (ancienne) de code incriminée est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void HTMLdelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
    {
        QStyleOptionViewItem optionV4 = option;
        initStyleOption(&optionV4, index);
     
        QStyle *style = optionV4.widget? optionV4.widget->style() : QApplication::style();
     
        QTextDocument doc;
        doc.setHtml(optionV4.text);
        doc.setTextWidth(optionV4.rect.width());
    ...
    J'ai bien vu sous Windows que le code était déclaré comme obsolète, que Paint est virtual. Le code ne déclare pas d'erreur en Qt5.7 MingGw 53_32.

    Sous Ubuntu 16.04 avec un Qt 5.7 GCC64, j'obtiens l'erreur suivante :
    /home/untel/slzQtdevs/TableViewHTML16/htmldelegate.cpp:29: erreur : 'class QStyleOptionViewItem' has no member named 'widget'
    QStyle *style = optionV4.widget? optionV4.widget->style() : QApplication::style();
    *»»»»»»»»»»»»»»»»»»»»»» ^
    En effet widget n'existe pas mais pourquoi est-ce que cela passe en windows ? Et comment contourne-t-on le problème en linux ?
    J'ai pensé initialement que le compilateur gcc était réglé plus strictement que le mingw. Mais je n'ai rien vu de particulier.Nom : 012.png
Affichages : 212
Taille : 123,5 Ko

    Merci pour votre aide.
    Cordialement. AD.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 252
    Points : 272
    Points
    272
    Par défaut
    OK
    Résolu. Confusion entre StyleOptionViewItem et StyleOptionViewItemV4.

    Puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QTextDocument doc;
    doc.setHtml(optionV4.text);
    doc.setTextWidth(optionV4.rect.width())  ;
    Ainsi que quelques lignes plus loin,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    optionV4.text = QString();
    optionV4.widget->style()->drawControl(QStyle::CE_ItemViewItem, &optionV4, painter);
    Nom : 013.png
Affichages : 180
Taille : 48,9 Ko

    Reste un problème de fontes et éventuellement de tailles à l'affichage mais il sera corrigé avec des expressions régulières. Je le fais déjà pour la police d'affichage et la police d'impression et leurs tailles qui ne sont pas nécessairement identiques..

    Cordialement. AD.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Portage Windows vers Linux
    Par Stéphane-M dans le forum Linux
    Réponses: 3
    Dernier message: 06/01/2011, 22h10
  2. Portage Appli Windows vers linux (C++)
    Par magic-moad dans le forum C++
    Réponses: 5
    Dernier message: 14/04/2010, 15h14
  3. portage de SCO vers Linux
    Par jeje99 dans le forum Informix
    Réponses: 1
    Dernier message: 27/05/2006, 12h40
  4. pb CString : Windows vers Linux
    Par ostralo dans le forum C++
    Réponses: 12
    Dernier message: 25/01/2006, 15h51
  5. Réponses: 1
    Dernier message: 01/02/2005, 12h56

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