2013-09-25 40 views
8

Tôi muốn ẩn cột ID trong chế độ xem bảng và tôi không thể thực hiện điều đó trong quá trình triển khai của mình. Ai giúp tôi với?Cột Qt Ẩn trong 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++; 
} 

} 

Trả lời

14

Bạn sử dụng ui->tableView->setColumnHidden(6, true);, nhưng không có cột với chỉ số 6. Bạn nên viết ui->tableView->setColumnHidden(5, true); thay vào đó, vì số cột ID là khá hơn 6.

UPDATE:

Bạn cũng cần phải ẩn (các) cột sau khi bạn đặt mô hình thành chế độ xem, nghĩa là:

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

tôi đã thử trên các chỉ mục khác và không hoạt động. – laura

+0

@laura vui lòng tìm câu trả lời được cập nhật ở trên. – vahancho

Các vấn đề liên quan