2015-08-03 8 views
4

Я создаю QListWidget с некоторыми элементами.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) 

Но детали не имеют центр выравнивания

enter image description here

Почему?

+1

Вы установили выравнивание текста в «center», и текст выравнивается правильно в каждом элементе. Проблема в том, что элементы не выровнены внутри виджета списка. И я боюсь, так работает иконок. 'setUniformItemSizes (true)' немного помогает, но не решает проблему. Вы также можете попытаться установить минимальную и максимальную ширину списка в ширину самого длинного текста ваших предметов и запретить словосочетание слов. – Amartel

ответ

2

Я сделал некоторые изменения вашего кода, но основной является добавление QListWidgetItem::setSizeHint() для каждого элемента:

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); 

Теперь она выглядит выровненной для меня:

enter image description here

+0

Спасибо. Это хорошее решение проблемы. – Vika

Смежные вопросы