我正在创建一个简单的小部件,其中包含一个带有图标的 qlistview 和一个 QSlider。小部件是使用 Qt 设计器创建的。我想要做的是让我的图标完全适合 QListView 的高度,以便我有一行图标。我试图通过使用从 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( )。高度()。