2014-07-23 9 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; 
} 

aggiungo un QPushButton nella cella con la funzione setCellWidget(), lo so, se è un QTableWidgetItem, posso usare :Aggiungi un QPushButton in un QTableWidgetItem in un QTableWidget, Come rendere QT :: AlignHCenter

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

Ma è un widget,

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

l'articolo è nullo.

posso ottenere il cellulare da un uso

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

Come devo fare per rendere il pulsante centrato nella cella? Grazie!

+0

Hai perdita di memoria qui: 'QPushButton * btn_edit = new QPushButton(); btn_edit = new QPushButton(); '(perché questo codice alloca una coppia di pulsanti, ma ne usa solo una seconda) – Ilya

+0

@Ilya ok, questo è un errore ...... grazie! –

risposta

8

Prova questo:

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

Grazie mille! –

Problemi correlati