1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #include <QApplication> #include <QWidget> #include <QTableView> #include <QStandardItemModel> #include <QVBoxLayout> #include <QHeaderView> #include <QPushButton> #include <QDebug> #include <qlabel.h>
void setupTableViewDemo(QWidget *parent) { QVBoxLayout *layout = new QVBoxLayout(parent);
QStandardItemModel *model = new QStandardItemModel(4, 3, parent); model->setHorizontalHeaderLabels({"ID", "产品名称", "库存状态"});
for (int row = 0; row < 4; ++row) { model->setData(model->index(row, 0), row + 101); model->setData(model->index(row, 1), QString("产品 %1").arg(char('A' + row))); model->setData(model->index(row, 2), "有货");
model->item(row, 2)->setForeground(Qt::darkGreen); }
QTableView *tableView = new QTableView(parent); tableView->setModel(model);
tableView->horizontalHeader()->setStretchLastSection(true); tableView->setAlternatingRowColors(true);
QPushButton *btnUpdate = new QPushButton("更新第一行数据", parent); QObject::connect(btnUpdate, &QPushButton::clicked, [model]() { model->setData(model->index(0, 1), "🔥 热销产品"); model->item(0, 1)->setBackground(Qt::yellow); });
layout->addWidget(new QLabel("QTableView (Model/View 架构):")); layout->addWidget(tableView); layout->addWidget(btnUpdate); }
int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; w.setWindowTitle("QTableView 专业数据表格"); w.resize(500, 350); setupTableViewDemo(&w); w.show(); return a.exec(); }
|