Уже начинаю терять веру в логику...
В общем суть проблемы такова: если добавлять в этот виджет два элемента - он работает, а если три - то программа компилируется, но не запускается... Вот выдержка из кода:
Основные элементы сделаны в качестве массивов:
paintWidget *pWidget[];
frameStruct *fram[];
QListWidgetItem *__item[];
Сначала объявляю QListWidget:
listWidget = new QListWidget(centralwidget);
listWidget->setObjectName(QString::fromUtf8("listWidget"));
listWidget->setGeometry(QRect(0, 460, 801, 121));
listWidget->setIconSize(QSize(100, 100));
listWidget->setTextElideMode(Qt::ElideNone);
listWidget->setVerticalScrollMode(QAbstractItemView::ScrollPerItem);
listWidget->setFlow(QListView::LeftToRight);
listWidget->setLayoutMode(QListView::SinglePass);
listWidget->setViewMode(QListView::ListMode);
Затем создаю виджеты, в которых рисуется определённая картинка и графические примитивы. Таких виджетов я могу создать сколько угодно и всё отлично рисуется:
pWidget[0] = new paintWidget(frameGraph);
int w_s, h_s = 100;
w_s = h_s * fram[0]->width / fram[0]->height;
pWidget[0]->setPicture(w_s, h_s, fram[0]);
pWidget[1] = new paintWidget(frameGraph);
pWidget[1]->setPicture(w_s, h_s, fram[1]);
Дальше я создаю элементы QListWidgetItem и в качестве иконки вставляю в них сграбленный виджет pWidget:
__item[0] = new QListWidgetItem(listWidget);
__item[0]->setIcon(QIcon(QPixmap::grabWidget(pWidget[0])));
__item[1] = new QListWidgetItem(listWidget);
__item[1]->setIcon(QIcon(QPixmap::grabWidget(pWidget[1])));
До сюда всё нормально. Но как только я добавляю третий элемент - программа не стартует. Причём необязательно совать в него иконку - достаточно просто создать. Сначала делал это в цикле. Затем вот решил проверить поштучно.
Может кто-то понимает логику происходящего? :oops:
добавлено спустя: Ну и хит сезона: если добавлять третий элемент не из массива __item[], а просто, скажем, item1, то всё работает... Это как понимать?? Что, тот массив не может хранить больше двух элементов??