size - 更改 QStandardItemModel 中的 QIcon 大小

标签 size qstandarditemmodel qicon

我正在尝试使用任意大小的 qIcons 制作 QTableView/QStandardItemModel。在下面的 MWE 中,我已经使用委托(delegate)成功地更改了行的高度。我不知道如何让它在较大的行中使用较大的图标大小。任何帮助表示赞赏。请注意,只要我可以设置该高度,所有行的高度都可以相同。例如,如何在下面的示例中将图标设为 50x50。

#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();
}

最佳答案

尝试

ListView->setIconSize(QSize(100,100));

关于size - 更改 QStandardItemModel 中的 QIcon 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17582381/

相关文章:

python - 从 resources.qrc 文件创建 QIcon

c - 在c中找到一个int的位宽;最佳跨平台方法

c++ - uint32_t如何保证32位?

java - 使用 jsonpath 表达式的数组大小 - Stefan Goessner JsonPath

c++ - 将类附加到 QStandardItemModel

python - 不显示图标

python-2.7 - Python读取unicode文件名

c++ - '->' 的基操作数具有非指针类型 'QStandardItemModel'

python - 在 QCompleter 激活调用时查找 QStandardItemModel 的索引

c++ - Qt qrc 资源文件 - 无法加载图标