2013-09-25 11 views
8

Chcę ukryć kolumnę ID w widoku tabeli i nie mogę tego zrobić w mojej implementacji. Czy ktoś może mi pomóc?Qt Ukryj kolumnę w 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++; 
} 

} 

Odpowiedz

14

użyć ui->tableView->setColumnHidden(6, true);, ale nie ma kolumny z indeksem 6. Należy napisać ui->tableView->setColumnHidden(5, true); zamiast, ponieważ kolumna numer ID jest raczej niż 6.

UPDATE:

Musisz również ukryć kolumnę (y) po ustawieniu modelu w widoku, np .:

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

Próbowałem na innych indeksach i nie działa. – laura

+0

@laura, znajdź zaktualizowaną odpowiedź powyżej. – vahancho

Powiązane problemy