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.
La partie (ancienne) de code incriminée est la suivante :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.
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()); ...
Sous Ubuntu 16.04 avec un Qt 5.7 GCC64, j'obtiens l'erreur suivante :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 ?/home/untel/slzQtdevs/TableViewHTML16/htmldelegate.cpp:29: erreur : 'class QStyleOptionViewItem' has no member named 'widget'
QStyle *style = optionV4.widget? optionV4.widget->style() : QApplication::style();
*»»»»»»»»»»»»»»»»»»»»»» ^
J'ai pensé initialement que le compilateur gcc était réglé plus strictement que le mingw. Mais je n'ai rien vu de particulier.
Merci pour votre aide.
Cordialement. AD.
Partager