【问题标题】:Add a QPushButton into a QTableWidgetItem in a QTableWidget, How to make it Qt::AlignHCenter将 QPushButton 添加到 QTableWidget 中的 QTableWidgetItem 中,如何制作 Qt::AlignHCenter
【发布时间】:2014-09-14 13:39:10
【问题描述】:
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;
}

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

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

但它是一个小部件,

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

该项为空。

我可以通过使用获取单元格

ui.table->cellWidget(0,3).

如何使按钮在单元格中居中?

【问题讨论】:

  • 你这里有内存泄漏:QPushButton* btn_edit = new QPushButton(); btn_edit = new QPushButton();(因为这段代码分配了一对按钮,但只使用了其中的第二个)
  • @Ilya 好吧,那是个错误……谢谢!

标签: c++ qt qtablewidget qtablewidgetitem


【解决方案1】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2019-12-06
    相关资源
    最近更新 更多