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;
}
I add a QPushButton
into the cell with the function setCellWidget()
.
I know that if it's a QTableWidgetItem
, I can use:
ui.table->item(0, 3)->setTextAlignment(QT::AlignHCenter)
But it is a widget, so using:
QTableWidgetItem item = ui.table->item(0, 3);
item
is null.
I can get the cell using:
ui.table->cellWidget(0, 3)
What should I do to make the button centered in the cell?
Try this:
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);