在QTableWidget中的QTableWidgetItem中添加一个QPushButton,如何制作Qt::AlignHCenter

问题描述 投票:0回答:1
for (int i = 0; i < page.size(); i++) {
    User user = Poco::AnyCast<User>(*it);
    ui.table->setItem(i, 0, new QTableWidgetItem(user.userName)); 
    ui.table->setItem(i, 1, new QTableWidgetItem(user.sex));
    ui.table->setItem(i, 2, new QTableWidgetItem(user.age));
        
    QPushButton* btn_edit = new QPushButton();
    btn_edit = new QPushButton();
    btn_edit->setText("Edit");
    ui.table->setCellWidget(i, 3, (QWidget*)btn_edit);

    ++it;
}
    

我使用函数

QPushButton
setCellWidget()
添加到单元格中。 我知道如果它是
QTableWidgetItem
,我可以使用:

ui.table->item(0, 3)->setTextAlignment(QT::AlignHCenter)

但它是一个小部件,所以使用:

QTableWidgetItem item = ui.table->item(0, 3); 

item
为空。

我可以使用以下方式获取电池:

ui.table->cellWidget(0, 3)

我应该怎样做才能使按钮在单元格中居中?

c++ qt qtablewidget qtablewidgetitem
1个回答
20
投票

试试这个:

QWidget* pWidget = new QWidget();
QPushButton* btn_edit = new QPushButton();
btn_edit->setText("Edit");
QHBoxLayout* pLayout = new QHBoxLayout(pWidget);
pLayout->addWidget(btn_edit);
pLayout->setAlignment(Qt::AlignCenter);
pLayout->setContentsMargins(0, 0, 0, 0);
pWidget->setLayout(pLayout);
ui.table->setCellWidget(i, 3, pWidget);
© www.soinside.com 2019 - 2024. All rights reserved.