Qt QListWidget对齐项目

Qt QListWidget对齐项目,qt,Qt,我用一些项目创建QListWidget QHBoxLayout* h_layout = new QHBoxLayout; h_layout->setMargin( 0 ); menu_list_widget_ = new QListWidget; menu_list_widget_->setFlow(QListView::TopToBottom); menu_list_widget_->setViewMode(QListView::IconMo

我用一些项目创建QListWidget

QHBoxLayout* h_layout = new QHBoxLayout;
    h_layout->setMargin( 0 );
    menu_list_widget_  = new QListWidget;
    menu_list_widget_->setFlow(QListView::TopToBottom);
    menu_list_widget_->setViewMode(QListView::IconMode);
    menu_list_widget_->setMovement(QListView::Static);
    menu_list_widget_->setFixedWidth( 100 );

    QListWidgetItem* lwi;
    menu_list_widget_->addItem( lwi = new QListWidgetItem(QIcon(":/icons/color_pencils.png"), "Цвета") );
    lwi->setTextAlignment(Qt::AlignCenter);
    menu_list_widget_->addItem( lwi = new QListWidgetItem(QIcon(":/icons/font.png"), "Шрифт") );
    lwi->setTextAlignment(Qt::AlignCenter);
    lwi->setHidden( true );
// etc
    h_layout->addWidget(menu_list_widget_, 0, Qt::AlignHCenter)
但是项目没有中心对齐


为什么?

我对您的代码做了一些修改,但主要是为每个元素添加了:

QListWidgetItem* lwi = new QListWidgetItem(QIcon(":Image/pinwheel.png"), "Цвета");
lwi->setSizeHint(QSize(256, 52));
listWidget->addItem( lwi );
lwi->setTextAlignment(Qt::AlignCenter);

lwi =  new QListWidgetItem(QIcon(":Image/pinwheel.png"), "Управление и что-то еще");
lwi->setSizeHint(QSize(256, 52));
listWidget->addItem( lwi );
lwi->setTextAlignment(Qt::AlignCenter);
现在对我来说,它看起来是对齐的:


您已将文本对齐设置为“居中”,并且文本在每个项目中都正确对齐。问题是-列表小部件中的项目没有对齐。恐怕这就是图标模式的工作原理
setUniformItemSizes(true)
有点帮助,但不能解决问题。您还可以尝试将列表的最小和最大宽度设置为项目中最长文本的宽度,并禁止包装文字。我花了一些时间才找到为什么要将其居中。您所做的技巧是将图标的sizeHint宽度设置为小部件宽度。实际上,图标看起来居中,但实际上项目仍然是左对齐的。