1、QTableView
#if 0
QStandardItemModel *model = new QStandardItemModel;
model->setColumnCount(5);
model->setRowCount(3);
#else
QStandardItemModel *model = new QStandardItemModel(3, 5); //指定表格的行列
#endif
QStringList Hlabels;
Hlabels << "id" << "name" << "age" << "math" << "eng";
model->setHorizontalHeaderLabels(Hlabels); //設置行表頭
QStringList Vlabels;
Vlabels << "col1" << "col2" << "col3";
model->setVerticalHeaderLabels(Vlabels); //設置列表頭
for ( int i = 0; i < model->rowCount(); i++ ) {
for ( int j = 0; j < model->columnCount(); j++ ) {
QStandardItem *item = new QStandardItem;
item->setData(QVariant(i), Qt::EditRole); //表明以數字形式存儲
model->setItem(i, j, item);
model->item(i, j)->setTextAlignment(Qt::AlignCenter); //設置居中
model->item(i, j)->setForeground(Qt::red); //設置單元格文本顏色
QFont font;
font.setFamily("Times");
font.setPointSize(12);
font.setBold(true); //加粗
font.setItalic(true); //斜體
font.setUnderline(true); //下劃線
model->item(i, j)->setFont(font); //設置字體
model->verticalHeaderItem(i)->setFont(font); //設置表頭字體
model->horizontalHeaderItem(j)->setFont(font);
model->verticalHeaderItem(i)->setForeground(Qt::red); //設置表頭字體顏色
model->horizontalHeaderItem(j)->setForeground(Qt::red);
}
}
Qt::ItemFlags flag = model->item(1, 2)->flags();
model->item(1, 2)->setFlags(flag & ~Qt::ItemIsEditable); //設置某一單元格不可編輯
model->sort(3, Qt::DescendingOrder); //按第四列降序
QTableView *tableView = new QTableView(this);
// tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); //設置不可編輯
// tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //選中一行
// tableView->horizontalHeader()->setHidden(true); //隱藏列表頭
// tableView->verticalHeader()->setHidden(true); //隱藏行表頭
// tableView->setSortingEnabled(true); //設置可排序
//如果在tableView中使用右鍵菜單,需啓用該屬性
tableView->setContextMenuPolicy(Qt::CustomContextMenu);
tableView->setModel(model);
setCentralWidget(tableView);
resize(550, 300);