2013-09-25 3 views
8

Voglio nascondere la colonna ID nella vista tabella e non posso farlo sulla mia implementazione. Qualcuno può aiutarmi?Qt Nascondi colonna in QTableView

void MainWindow::on_actionClear_Search_triggered() 
{ 
model = new QStandardItemModel(cars.size(),6,this); 
//create header 
createHeader(model); 
//set data to the table view 
populate(cars); 

ui->tableView->setColumnHidden(6,true); 
ui->tableView->setModel(model); 


} 

void MainWindow::createHeader(QStandardItemModel *model){ 


model->setHorizontalHeaderItem(0,new QStandardItem("Car")); 
model->setHorizontalHeaderItem(1, new QStandardItem("Type")); 
model->setHorizontalHeaderItem(2, new QStandardItem("Mileage")); 
model->setHorizontalHeaderItem(3, new QStandardItem("Year")); 
model->setHorizontalHeaderItem(4, new QStandardItem("Is registered")); 
model->setHorizontalHeaderItem(5, new QStandardItem("ID")); 
} 

void MainWindow::populate(const QList<Vehicle> &vehicles) 
{ 
int j = 0; 
QList<Vehicle>::ConstIterator iter; 
for(iter= vehicles.begin(); iter != vehicles.end(); iter++){ 
    const Vehicle& car = *iter; 
    //set car 
    QString makeAndModel = car.getGeneralData().getMake() + car.getGeneralData().getModel(); 
    QStandardItem *mAndM = new QStandardItem(QString(makeAndModel)); 
    mAndM->setEditable(false); 
    model->setItem(j,0,mAndM); 

    //set type 
    QStandardItem *type = new QStandardItem(QString(car.getGeneralData().getType())); 
    type->setEditable(false); 
    model->setItem(j,1,type); 

    //set mileage 
    QString mileageString = QString::number(car.getGeneralData().getMileage()); 
    QStandardItem *mileage = new QStandardItem(QString(mileageString)); 
    mileage->setEditable(false); 
    model->setItem(j,2,mileage); 

    //set year 
    QString yearString = QString::number(car.getGeneralData().getYear()); 
    QStandardItem *year = new QStandardItem(QString(yearString)); 
    year->setEditable(false); 
    model->setItem(j,3,year); 

    //set registration 
    QString regString = VehicleHelper::convertBoolToString(car.getRegistration().isRegistered()); 
    QStandardItem *regDate = new QStandardItem(QString(regString)); 
    regDate->setEditable(false); 
    model->setItem(j,4,regDate); 


    //set ID column 
    QStandardItem *idNumber = new QStandardItem(QString(car.getVehicleID().getID())); 
    idNumber->setEditable(false); 
    model->setItem(j,5,idNumber); 
    j++; 
} 

} 

risposta

14

si utilizza ui->tableView->setColumnHidden(6, true);, ma non c'è colonna con indice di 6. Si dovrebbe scrivere ui->tableView->setColumnHidden(5, true); invece, perché il numero di colonna ID è piuttosto a 6.

UPDATE:

Devi anche nascondere le colonne dopo aver impostato il modello sulla vista, ad esempio:

ui->tableView->setModel(model); 
ui->tableView->setColumnHidden(5, true); 
+0

ho provato sugli altri indici e non funziona. – laura

+0

@laura si prega di trovare la risposta aggiornata sopra. – vahancho