2 pièce(s) jointe(s)
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.
Pièce jointe 217947
La partie (ancienne) de code incriminée est la suivante :
Code:
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 :
Citation:
/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.Pièce jointe 217950
Merci pour votre aide.
Cordialement. AD.