Bild in TreeWidget einbinden
Bild in TreeWidget einbinden
Damit meine ich jetzt nicht ein Icon sondern bspw. ein 100x100 Pixel großes Bild in einer Spalte. Geht das irgendwie oder kann man das alternativ umsetzen?
So hab endlich mal die Zeit gefunden mich damit auseinanderzusetzen, jedoch komm ich nicht weiter. Hier erstmal mein Code:
Mein Problem liegt jetzt beim "model->setData()" als erstes Argument wird ja ein QModelIndex verlangt. Gut, aber "model->index()" verlangt als einen parameter wieder ein QModelIndex... versteh das irgendwie nicht 
Code: Alles auswählen
#ifndef TESTDELEGATE2_H
#define TESTDELEGATE2_H
#include <QtGui/QWidget>
#include <QItemDelegate>
#include "ui_testdelegate2.h"
class TestDelegate2: public QWidget {
Q_OBJECT
public:
TestDelegate2(QWidget *parent = 0);
~TestDelegate2();
private:
Ui::TestDelegate2Class ui;
};
class TestDelegate: public QItemDelegate {
public:
TestDelegate(QObject *parent = 0);
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
};
#endif // TESTDELEGATE2_HCode: Alles auswählen
#include "testdelegate2.h"
#include <QPainter>
#include <QAbstractItemModel>
TestDelegate2::TestDelegate2(QWidget *parent) :
QWidget(parent) {
ui.setupUi(this);
QAbstractItemModel *model = ui.treeWidget->model();
TestDelegate delegate;
ui.treeWidget->setItemDelegate(&delegate);
QImage *blah = new QImage("D:\\Eclipse Workspace\\MyMDb\\icons\\info.png");
model->setData(??? , blah);
}
TestDelegate2::~TestDelegate2() {
}
TestDelegate::TestDelegate(QObject *parent) :
QItemDelegate(parent) {
}
void TestDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const {
painter->drawImage(QRect(0, 0, 50, 50), index.data().value<QImage>(), QRect(0, 0, 50, 50));
}
Du hatest doch ein QTreeWidget. Verwende halt
Code: Alles auswählen
void QTreeWidgetItem::setData ( int column, int role, const QVariant & value )Habs jetzt so, aber es wird nichts angezeigt. Nichtmal der text in der zweiten Spalte...
Code: Alles auswählen
TestDelegate2::TestDelegate2(QWidget *parent) :
QWidget(parent) {
ui.setupUi(this);
TestDelegate delegate;
ui.treeWidget->setItemDelegate(&delegate);
QImage *blah = new QImage("D:\\Eclipse Workspace\\MyMDb\\icons\\info.png");
QTreeWidgetItem item;
item.setData(0,0, blah);
item.setData(1,0, "test text");
ui.treeWidget->insertTopLevelItem(0, &item);
}Habs geändert. Jedoch wird noch immer nichts angezeigt. Wenn ich jedoch der Painter-Funktion direkt den Pfad das Image übergebe wird zwar das Bild, aber auch kein Text angezeigt.
Code: Alles auswählen
painter->drawImage(QRect(0, 0, 50, 50), QImage("D:\\Eclipse Workspace\\MyMDb\\icons\\info.png"), QRect(0, 0, 50, 50));