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 <QListView> #include <QStringListModel> #include <QVBoxLayout> #include <QPushButton> #include <QLineEdit> #include <qlabel.h>
void setupListViewDemo(QWidget *parent) { QVBoxLayout *layout = new QVBoxLayout(parent);
QStringList data; data << "Android" << "iOS" << "Windows" << "Linux"; QStringListModel *model = new QStringListModel(data, parent);
QListView *listView = new QListView(parent); listView->setModel(model);
QLineEdit *lineEdit = new QLineEdit(parent); lineEdit->setPlaceholderText("输入新系统名称...");
QPushButton *btnAdd = new QPushButton("添加到模型", parent);
QObject::connect(btnAdd, &QPushButton::clicked, [model, lineEdit]() { QString newText = lineEdit->text(); if (!newText.isEmpty()) { int row = model->rowCount(); model->insertRow(row); QModelIndex index = model->index(row); model->setData(index, newText); lineEdit->clear(); } });
QObject::connect(listView, &QListView::clicked, [model](const QModelIndex &index) { QString text = model->data(index).toString(); qDebug() << "你点击了第" << index.row() << "行,内容是:" << text; });
layout->addWidget(new QLabel("QListView (基于 Model/View):")); layout->addWidget(listView); layout->addWidget(lineEdit); layout->addWidget(btnAdd); }
int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; w.resize(300, 400); setupListViewDemo(&w); w.show(); return a.exec(); }
|