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

dodaję QPushButton do celi z setCellWidget function(), wiem, czy jest to QTableWidgetItem, mogę użyć :Dodaj QPushButton w QTableWidgetItem w QTableWidget, jak zrobić to QT :: AlignHCenter

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

Ale to jest widget,

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

element ma wartość null.

mogę dostać komórkę za pomocą

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

W jaki sposób należy zrobić, aby przycisk wyśrodkowany w komórce? Dziękujemy!

+0

Masz wyciek pamięci tutaj: 'QPushButton * btn_edit = new QPushButton(); btn_edit = new QPushButton(); '(ponieważ ten kod alokował parę przycisków, ale używa tylko drugiej z nich) – Ilya

+0

@Ilya w porządku, to pomyłka ...... dziękuję! –

Odpowiedz

8

Spróbuj tego:

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

Dziękuję bardzo! –