2015-08-03 141 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

您已設置文本對齊'中心'和文本在每個項目中正確對齊。問題是 - 項目不在列表窗口小部件中對齊。我擔心,這是圖標模式的工作原理。 '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