I am trying to make QTableView/QStandardItemModel with arbitrary sized qIcons. In the MWE below, I have successfully changed the height of a row using a delegate. I can't figure out how to make it use a larger icon size in the larger row. Any help appreciated. Note that all rows can be the same height as long as I can set that height. For example, how do I make the icons 50x50 in the example below.
#include <QtGui>
#include "test.h"
//////////////////////////////////////////////////////////////////////////
// TEST.H file:
//#include <QtGui>
//
//class MainWindow : public QMainWindow {
// Q_OBJECT
//
// public:
// MainWindow(QWidget *parent = 0);
//};
class ItemDelegate : public QItemDelegate {
public:
ItemDelegate() {}
QSize sizeHint ( const QStyleOptionViewItem &, const QModelIndex & ) const {
return QSize(50,50);
}
};
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
QImage iconImage(100, 100, QImage::Format_RGB32);
iconImage.fill(0xF08080);
const int ARRAY_HEIGHT = 2;
const int ARRAY_WIDTH = 2;
QStandardItemModel *model = new QStandardItemModel( ARRAY_HEIGHT, ARRAY_WIDTH );
model->setHeaderData( 1, Qt::Horizontal, QString("Icon") );
model->setHeaderData( 2, Qt::Horizontal, QString("Text") );
for (int yy=0; yy < ARRAY_HEIGHT; yy++ ) {
QStandardItem *newIconItem = new QStandardItem;
newIconItem->setIcon( QPixmap::fromImage( iconImage ) );
model->setItem( yy, 0, newIconItem );
QStandardItem *newTypeItem = new QStandardItem( QString("Foo") );
model->setItem( yy, 1, newTypeItem );
}
QTableView *table = new QTableView;
ItemDelegate *delegate = new ItemDelegate();
table->setModel(model);
table->setItemDelegate(delegate);
table->setSelectionMode(QAbstractItemView::SingleSelection);
table->setSelectionBehavior(QAbstractItemView::SelectRows);
table->verticalHeader()->setVisible(false);
table->verticalScrollBar()->setVisible(false);
table->resizeRowsToContents();
table->resizeColumnsToContents();
QHeaderView *headerView = table->horizontalHeader();
headerView->setStretchLastSection(true);
setCentralWidget( table );
}
int main( int argc, char *argv[] ) {
QApplication app(argc, argv);
MainWindow win;
win.show();
return app.exec();
}