アイコンと QSlider を含む qlistview を含む単純なウィジェットを作成しています。ウィジェットは Qt Designer で作成されます。私がやろうとしているのは、アイコンを QListView の高さに正確に合わせて、アイコンが 1 行になるようにすることです。QWidget から継承された関数を使用して qlistview の高さを読み取ろうとしていますが、QListView の実際のサイズより常に小さい値を取得し続けています。この動作に関するヒントはありますか?
以下にコードの一部を示します。
フォームのコンストラクタ:
SliderWithButtons::SliderWithButtons(QWidget *parent) :
QWidget(parent),
ui(new Ui::SliderWithButtons)
{
ui->setupUi(this);
//ui->commandListView->setStyleSheet(" QListView { background-color: lightgray }");
ui->commandListView->setViewMode(QListView::IconMode);
ui->commandListView->setFlow(QListView::LeftToRight);
ui->commandListView->setWrapping(true);
ui->commandListView->setMovement(QListView::Static);
ui->commandListView->setResizeMode(QListView::Adjust);
ui->commandListView->setLayoutMode(QListView::SinglePass);
**mIconWidth = ui->commandListView->geometry().height();
mIconHeight = mIconWidth;**
ui->commandListView->setGridSize(QSize(mIconWidth,mIconHeight));
ui->commandListView->setIconSize(QSize(mIconWidth,mIconHeight));
**iconList = new IconList(this,mIconWidth, mIconHeight);**
iconList->addIcons();
ui->commandListView->setModel(iconList);
}
私のモデルのデータ関数:
QVariant IconList::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if (role == Qt::DecorationRole)
return QIcon(mIcons.value(index.row()).scaled(mIconWidth, mIconHeight,
Qt::KeepAspectRatio, Qt::SmoothTransformation));
return QVariant();
}
ウィジェットには、垂直レイアウトの QListView と QSlider のみが含まれます。問題は、ui->commandListView->geometry().height() を呼び出しても実際の qlistview の高さが得られないことです。また、ui->commandListView->height() または ui->commandListView->frameGeometry( )。身長()。