ui->setupUi(this);
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableView->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
programModel.setHorizontalHeaderLabels(QStringList() << "型材代码" << "程序号");
programModel.setColumnCount(2);
DataModel dataModel;
programList = dataModel.queryProgramList();
programModel.setRowCount(programList.size() > 10 ? programList.size():10);
for (int i = 0; i < programList.size(); i++) {
QStringList program = programList.at(i).split(";");
for (int j = 0; j < program.size(); j++) {
QStandardItem* item = new QStandardItem(program.at(j));
item->setTextAlignment(Qt::AlignCenter);// 设置文本居中
item->setEditable(false);//不可编辑
programModel.setItem(i, j, item);
}
}
ui->tableView->setModel(&programModel);
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
// 设置双击编辑模式
ui->tableView->setEditTriggers(QAbstractItemView::DoubleClicked);
QObject::connect(ui->tableView, &QTableView::doubleClicked, [&](const QModelIndex& index) {
int row = index.row();
QStandardItem* nameItem = programModel.item(row, 0);
if (nameItem != NULL) {
QString sectionCode = nameItem->text();
emit sendSectionCode(sectionCode);
}
});
注意:一定要设置双支编辑模式
tableView列宽的设置
-
将QTableWidget的horizontalHeader()设置为Stretch,这样最后一列会自动拉伸,以适应表格的宽度;
-
将QTableWidget的horizontalHeader()设置为ResizeToContents,这样最后一列会根据内容自动调整宽度;
-
将QTableWidget的horizontalHeader()设置为Fixed,这样最后一列的宽度会固定,不会自动拉伸;
-
将QTableWidget的horizontalHeader()设置为Interactive,这样最后一列的宽度可以通过鼠标拖动来调整;
-
将QTableWidget的setColumnWidth()设置为指定的宽度,这样最后一列的宽度就会固定在指定的宽度上。