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 64 65 66 67 68 69 70 71
| #include <QApplication> #include <QWidget> #include <QTableWidget> #include <QTableWidgetItem> #include <QVBoxLayout> #include <QPushButton> #include <QHeaderView> #include <QMessageBox>
void setupTableWidgetDemo(QWidget *parent) { QVBoxLayout *layout = new QVBoxLayout(parent);
QTableWidget *tableWidget = new QTableWidget(3, 3, parent);
tableWidget->setHorizontalHeaderLabels({"姓名", "年龄", "得分"});
tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
tableWidget->setItem(0, 0, new QTableWidgetItem("张三")); tableWidget->setItem(0, 1, new QTableWidgetItem("25")); tableWidget->setItem(0, 2, new QTableWidgetItem("95"));
QTableWidgetItem *readOnlyItem = new QTableWidgetItem("李四"); readOnlyItem->setFlags(readOnlyItem->flags() & ~Qt::ItemIsEditable); tableWidget->setItem(1, 0, readOnlyItem); tableWidget->setItem(1, 1, new QTableWidgetItem("22")); tableWidget->setItem(1, 2, new QTableWidgetItem("88"));
QTableWidgetItem *iconItem = new QTableWidgetItem("王五"); iconItem->setIcon(parent->style()->standardIcon(QStyle::SP_DirIcon)); tableWidget->setItem(2, 0, iconItem); tableWidget->setItem(2, 1, new QTableWidgetItem("28")); tableWidget->setItem(2, 2, new QTableWidgetItem("92"));
QPushButton *btnGet = new QPushButton("读取选中单元格", parent); QObject::connect(btnGet, &QPushButton::clicked, [tableWidget]() { QList<QTableWidgetItem*> selected = tableWidget->selectedItems(); if (!selected.isEmpty()) { QMessageBox::information(nullptr, "结果", "你选中了:" + selected.first()->text()); } });
QObject::connect(tableWidget, &QTableWidget::cellChanged, [](int row, int column) { qDebug() << "位置 (" << row << "," << column << ") 的数据被修改了!"; });
layout->addWidget(tableWidget); layout->addWidget(btnGet); }
int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; w.setWindowTitle("QTableWidget 电子表格示例"); w.resize(500, 400); setupTableWidgetDemo(&w); w.show(); return a.exec(); }
|