C++ QTableView中的Qt隐藏列

C++ QTableView中的Qt隐藏列,c++,qt,qtableview,C++,Qt,Qtableview,我想在QtableView中隐藏ID列,但在我的实现中无法这样做。有人能帮我吗 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->s

我想在
QtableView
中隐藏
ID
列,但在我的实现中无法这样做。有人能帮我吗

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

}
void主窗口::on_actionClear_Search_triggered()
{
模型=新的QStandarItemModel(cars.size(),6,this);
//创建标题
createHeader(模型);
//将数据设置为表视图
居住(汽车);
ui->tableView->setColumnHidden(6,true);
ui->tableView->setModel(模型);
}
void主窗口::createHeader(QStandardItemModel*模型){
模型->设置水平头部边界(0,新QS标准项(“Car”);
模型->设置水平头柱(1,新QS标准柱(“类型”);
型号->设置水平车头数(2,新QS标准项目(“里程”);
型号->设置水平头柱(3,新QS标准柱(“年”);
型号->设置水平头项(4,新QS标准项(“已注册”);
模型->设置水平头部边界(5,新QS标准项(“ID”);
}
void主窗口::填充(常量QList和车辆)
{
int j=0;
QList::国际热核聚变实验堆;
对于(iter=vehicles.begin();iter!=vehicles.end();iter++){
const Vehicle&car=*iter;
//定置车
QString makeAndModel=car.getGeneralData().getMake()+car.getGeneralData().getModel();
QStandardItem*mAndM=新的QStandardItem(QString(makeAndModel));
mAndM->setEditable(假);
模型->设置项(j,0,mAndM);
//集合类型
QStandardItem*type=新的QStandardItem(QString(car.getGeneralData().getType());
类型->设置可编辑(假);
模型->设置项(j,1,类型);
//设定里程
QString mileageString=QString::number(car.getGeneralData().getMilege());
QStandardItem*里程=新的QStandardItem(QString(mileageString));
里程->设置可编辑(假);
型号->设置项(j,2,里程);
//固定年份
QString yearString=QString::number(car.getGeneralData().getYear());
QStandardItem*year=新的QStandardItem(QString(yearString));
年份->设置可编辑(假);
型号->设置项(j,3,年);
//集合注册
QString regString=vehicleholper::convertBoolToString(car.getRegistration().isRegistered());
QStandardItem*regDate=新的QStandardItem(QString(regString));
regDate->setEditable(false);
模型->设置项(j,4,regDate);
//设置ID列
QStandardItem*idNumber=新的QStandardItem(QString(car.getVehicleID().getID());
idNumber->setEditable(假);
模型->设置项(j,5,idNumber);
j++;
}
}

您使用
ui->tableView->setColumnHidden(6,true),但没有索引为6的列。您应该编写
ui->tableView->setColumnHidden(5,true)相反,因为ID列编号为5而不是6

更新:

将模型设置为视图后,还需要隐藏列,即:

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