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

ich eine QPushButton in die Zelle mit der Funktion setCellWidget(), ich weiß, wenn es einen QTableWidgetItem ist, kann ich hinzufügen machen verwenden :eine QPushButton in eine QTableWidgetItem in einem QTableWidget hinzufügen, wie es QT :: AlignHCenter

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

Aber es ist ein Widget,

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

das Element ist null.

Ich kann die Zelle erhalten durch Verwendung

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

Wie soll ich die Schaltfläche in der Zelle zentriert tun, um? Vielen Dank!

+0

Sie haben Speicherleck hier: 'QPushButton * btn_edit = new QPushButton(); btn_edit = new QPushButton(); '(weil dieser Code zwei Schaltflächen zugewiesen hat, aber nur die zweite verwendet) – Ilya

+0

@Ilya ok, das ist ein Fehler ...... Danke! –

Antwort

8

Versuchen Sie folgendes:

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

Vielen Dank! –

Verwandte Themen