私は を持っておりQListWidgetItem
、これにはQWidget
といくつかの がありQLabels
ます。ラベル ( imageLabel
、titleLabel
、descriptionLabel
) の高さは、テキストの長さによって異なります。QWidget の高さも同様QListWidgetItem
です。これまでのところ、パラメータsetSizeHint
は静的です:
QListWidgetItem* listWidgetItem = new QListWidgetItem();
listWidgetItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
listWidgetItem->setSizeHint(200, 180));
QWidget* widget = new QWidget();
QVBoxLayout* rootLayout = new QVBoxLayout();
rootLayout->setAlignment(Qt::AlignTop);
QHBoxLayout* contentLayout = new QHBoxLayout();
contentLayout->setAlignment(Qt::AlignLeft);
QLabel* imageLabel = new QLabel();
imageLabel->setPixmap(pixmap);
contentLayout->addWidget(imageLabel, 0, Qt::AlignTop);
QVBoxLayout* informationLayout = new QVBoxLayout();
informationLayout->setAlignment(Qt::AlignTop);
QLabel* titleLabel = new QLabel("<b>" + title + "</b>");
titleLabel->setWordWrap(true);
informationLayout->addWidget(titleLabel);
QLabel* descriptionLabel = new QLabel(description);
descriptionLabel->setWordWrap(true);
informationLayout->addWidget(descriptionLabel);
QLabel* dateLabel = new QLabel(date.toString());
informationLayout->addWidget(dateLabel);
contentLayout->addLayout(informationLayout);
rootLayout->addLayout(contentLayout);
QHBoxLayout* buttonLayout = new QHBoxLayout();
QPushButton* buttonOne = new QPushButton(tr("Button 1"));
QObject::connect(buttonOne, SIGNAL(clicked()), mButtonOneSignalMapper, SLOT(map()));
mButtonOneSignalMapper->setMapping(buttonOne, index);
buttonLayout->addWidget(buttonOne);
QPushButton* buttonTwo = new QPushButton(tr("Button 2"));
QObject::connect(buttonTwo, SIGNAL(clicked()), mButtonTwoSignalMapper, SLOT(map()));
mButtonTwoSignalMapper->setMapping(buttonTwo, index);
buttonLayout->addWidget(buttonTwo);
rootLayout->addLayout(buttonLayout);
widget->setLayout(rootLayout);
mListWidget->addItem(listWidgetItem);
mListWidget->setItemWidget(listWidgetItem, widget);
sizeHint
で使用される表示コンテンツの幅と高さに関して、適切に設定する方法はありますQLabels
かQWidget
?
たとえば、最初QListWidgetItem
の にはdescriptionLabel
テキスト長が 300 文字の があり、2 番目にQListWidgetItem
はdescriptionLabel
テキストの長さが 1000 文字の があります。これまでのところ、両方ともQListWidgetItems
同じサイズ (幅 200px、高さ 180px) です。最初のQListWidgetItem
には 300 文字しかないため収まるかもしれませんQListWidgetItem
が、1000 文字のため 2 番目の には収まらない可能性があります。QListWidgetItem
したがって、必要なスペースに関して何らかの方法で動的にサイズを調整したいと思います(最初のものは2番目のものよりも少なくて済みます)。