iconModeで使用しているQListWidgetのビューポートを均等に塗りつぶして、アイテムのグリッドレイアウトを取得したいとします。QListWidgetのgridSizeのサイズを変更してアイテムをviewPortに均等に塗りつぶす方法は?
すべて問題なく動作しますが、問題は、mainWindowのサイズを変更するときに、リストウィジェットが幅を取得するのを待っているため、行の新しい項目が領域を確保できることです。下の画像に示されている:
これは私がリサイズすることで、アプリの実行時にグリッド寸法を変更しています上記のコードでは、これまで
void MainWindow::resizeEvent(QResizeEvent* event)
{
if(ui->listWidget->count()>0){
float items_that_can_fill_view = ui->listWidget->width() /(330+ui->listWidget->spacing());
float total_width_of_items = items_that_can_fill_view*330;
float remaining_width = ui->listWidget->width()-total_width_of_items;
float evenly_distributed_width = remaining_width/items_that_can_fill_view;
ui->listWidget->setGridSize(QSize(330+evenly_distributed_width,ui->listWidget->item(0)->sizeHint().height()));
}
event->accept();
}
を試みたものですmainWindowの幅int型の代わりに浮動小数点型を型として選択し、非常に正確に変更しました。また、330はlistWidgetの各項目の幅です。
助けてください。
私はQt 5.8を使用しています。
あなたが全体の幅を埋めるか、第3列を追加するために図1から2つの列を伸ばすしようとしていますそれは図2のように切り取られていますか?または、最後の文で説明した2つの列の幅に合わせてウィンドウのサイズを変更しますか? – SteakOverflow
その空白の幅をlistviewのgridsizeに分割します。 –
グリッドサイズとアイテムサイズが異なることを忘れないでください。 –