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);