2017-05-19 2 views
0

Je veux mettre à niveau mon projet de Qt 5.7 à Qt5.8. J'ai une fonction qui montre une image sur un QListWidget.Qt 5.7 -> 5.8 ajouter QIcon à QListwidget

Mon projet, un visualiseur crée une miniature à partir d'une image et la convertit en QIcon. Après avoir créé le QIcon, il est ajouté au QListWidget en insérant un nouveau QListwidgetItem.

Dans 5.7 qui a bien fonctionné, mais dans 5.8 vignettes ne sont pas montrés.

Belows sont des codes

QIcon à QListWidget:

QIcon tmpIcon(pathOfImage); 

ui.listWidget->addItem(new QListWidgetItem(tmpIcon, pathOfImage)); 

Ce qui rend ce lieu? Comment puis-je ajuster à 5.8?


  • En 5.7, il fonctionne:

    In 5.7 it works!

  • En 5.8 il ne marche pas:

    In 5.8 ....


Mais maintenant, j'ai trouvé que la petite taille de PNG peut être montrée en 5.8.

Je ne sais pas quel est le problème. Peut-être la taille ou le format de l'image?

Dans 5.7 cela n'a pas affecté le QListwidget!

+0

ressemble à la propriété 'uniformItemSizes' a été défini d'une manière ou d'une autre à' true' ce qui conduit à ce problème. –

+0

Merci. Je vais regarder dedans! –

+0

ui.listWidget-> setUniformItemSizes (false); J'ai utilisé le code ci-dessus mais cela n'a pas fonctionné TT –

Répondre

0

J'ai fait une expérience.

QListWidgetItem* newItem = new QListWidgetItem(); 
    newItem->setIcon(tmpIcon); 
    newItem->setText(pathOfImage); 

après, j'ai essayé de l 'icône newItem (QListWidgetItem) et enregistré à .png.

QIcon te2 = newItem->icon(); 
    QPixmap test = te2.pixmap(te2.actualSize(QSize(1024, 1024))); 
    QFile file1(te + "yourFile.png"); 
    file1.open(QIODevice::WriteOnly); 
    test.save(&file1, "PNG"); 

Les fichiers JPG réguliers n'ont pas pu être enregistrés, mais seul un petit fichier logo png peut être enregistré correctement. Je pense que le processus d'ensemble entre QIcon et QListWitgetItem est le problème principal.