2013-09-25 24 views
8

Tablo görünümünde Kimlik sütununu gizlemek istiyorum ve bunu uygulamamda yapıyorum. Biri bana yardım edebilir mi?Qt QTableView sütununu gizle

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++; 
} 

} 

cevap

14

Sen ui->tableView->setColumnHidden(6, true); kullanır, ancak kimlik sütun numarası yerine 6'dan daha

GÜNCELLEME olduğu için yerine ui->tableView->setColumnHidden(5, true); yazmalısın indeksi 6. ile hiçbir sütun vardır:

Modeli görüntülemeye ayarladıktan sonra sütunları da gizlemeniz gerekir, örneğin:

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

Diğer dizinleri denedim ve çalışmıyor. – laura

+0

@laura Yukarıdaki güncellenmiş cevabı lütfen. – vahancho