2014-07-23 10 views
6
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; 
} 

tôi thêm một QPushButton vào tế bào với chức năng setCellWidget(), tôi biết, nếu đó là một QTableWidgetItem, tôi có thể sử dụng :Thêm một QPushButton thành một QTableWidgetItem trong một QTableWidget, Làm thế nào để làm cho nó QT :: AlignHCenter

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

Nhưng nó là một widget,

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

mục là null.

Tôi có thể lấy tế bào bằng cách sử dụng

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

Làm thế nào tôi nên làm gì để làm cho các nút trung tâm trong tế bào? Cảm ơn bạn!

+0

Bạn có rò rỉ bộ nhớ đây: 'QPushButton * btn_edit = new QPushButton(); btn_edit = new QPushButton(); '(bởi vì mã này được phân bổ một cặp nút, nhưng chỉ sử dụng thứ hai của chúng) – Ilya

+0

@ Ilya alright, đó là một sai lầm …… cảm ơn bạn! –

Trả lời

8

Hãy thử điều này:

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

Cảm ơn bạn rất nhiều! –

Các vấn đề liên quan