7
votes

QT - QICON dans QTableWidget Cell

J'ai essayé de nombreuses façons d'afficher un QICON dans une cellule QTableWidget et je ne sais pas pourquoi cela ne fonctionne pas. J'ai un bouton que lorsque vous appuyez sur Ajout d'une ligne à la table. Voici le code ...

void MainWindow::pressed()
{
    QTableWidgetItem *item = new QTableWidgetItem("Hello, world!");
    QTableWidgetItem *icon_item = new QTableWidgetItem;
    QIcon icon("/verified/path/to/icon.png");
    icon_item->setIcon(icon);

    int row = ui->tableFeed->rowCount();
    ui->tableFeed->insertRow(row);
    ui->tableFeed->setItem(row, 0, icon_item);
    ui->tableFeed->setItem(row, 1, item);
}


1 commentaires

Merci pour votre exemple de code, cela a travaillé pour moi! Le mien est comme ci-dessous, j'espère que c'est utile. Et je suppose que votre problème est le chemin de l'image. siconpath = ": / /images/networkstatusunkown.png"; // Image de Ressources QTableWidGetTitem * Item = Nouveau QTableWidGettitem (SS); // Construire l'icône du statut QICON icon2 (SICONPATH); Item-> Seticon (icon2); u-> tablewidgetsarchResult-> settitem (Irow, 0, article);


4 Réponses :


2
votes

Quand je veux ajouter une icône à une cellule, je le fais habituellement dans le modèle.

Dans la méthode des données, vous pouvez les mettre sous le rôle de décoration. xxx

espère que cela aide.


0 commentaires

4
votes

Vous devez définir l'icône sur un qtablowwidgetem code>, puis chargez l'icône et non l'icône elle-même.

QTableWidgetItem *item = new QTableWidgetItem("Hello, world!");
QTableWidgetItem *icon_item = new QTableWidgetItem;
QIcon icon("/verified/path/to/icon.png"); // It is better to load the icon from the
                                          // resource file and not from a path 
icon_item->setIcon(icon);

int row = ui->tableFeed->rowCount();
ui->tableFeed->insertRow(row);
ui->tableFeed->setItem(row, 0, icon_item);
ui->tableFeed->setItem(row, 1, item);


4 commentaires

Je peux voir l'élément de chaîne et non l'icône, mais j'ai vérifié le chemin à travers le terminal et j'ai double et triplé. Y a-t-il d'autres problèmes possibles (taille des icônes, etc.)?


Pouvez-vous coller la ligne où vous construisez votre icône (avec le chemin que vous utilisez)?


icône QICON ("/ home / nozwiak / images / icon.png");


Essayez ce qui suit: Copiez votre icône dans le dossier où votre source est et créez un nouveau fichier de ressources. Dans le fichier de ressource, créez un nouveau préfixe, par exemple des icônes et sous elle charger votre icône. Donnez à ces icônes un alias, par exemple l'icône. Utilisez-le maintenant pour charger l'icône icône qicon (": / icônes / icône") . Pour plus de détails, consultez ce lien doc.qt.nokia.com/4.7- Snapshot / Designer-Resources.html .



2
votes

Comme WebClectic a signalé, vous voulez probablement définir l'élément sur icon_item : xxx

... si cela a en effet compilé de cette façon alors je devinerais Il construit un QTableWidgetem implicite utilisant l'un de ses constructeurs disponibles .

Je ne sais pas ce qui se passe si l'icône ne peut pas être construite à partir du PNG spécifié, mais vous pouvez également vérifier que l'icône était bien chargée correctement et peut être affichée correctement. Par exemple, qu'est-ce que icon.isnull () retourner? Que se passe-t-il si vous le mettez dans une étiquette?

Une autre option consiste à charger l'icône à partir d'un pixmap afin que vous puissiez vérifier qu'il est bien chargé: xxx


3 commentaires

J'ai ajouté la ligne si (icon.isnull ()) {qdebug () << "Erreur: NULL icon"; } à ma source et aucun message n'a été affiché. J'ai donc modifié le chemin d'accès à un fichier qui n'existe pas et je n'ai toujours pas reçu de message. Donc, il semble que le fichier existe ou non, icône n'est pas null


Comment allais-je continuer à le mettre dans une étiquette?


label.setpixmap (icon.pixmap (largeur, hauteur)) . J'ai également édité mon message pour inclure une seconde façon de charger l'image.



2
votes

Vous devrez d'abord créer une ressource avec des icônes de préfixes pour que cela fonctionne:

item = QtGui.QTableWidgetItem()
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(_fromUtf8(":/icons/FSTable.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
item.setIcon(icon2)


0 commentaires