yang131

导航

QT 的 ModelView

 QApplication a(argc, argv);

    QDirModel model;    //QDirModel,   问文件目录树

    QTreeView tree;
    QListView list;
    QTableView table;

// 共享同一份目录树

    tree.setModel(&model);
    list.setModel(&model);
    table.setModel(&model);

// 选择的焦点,或者选中的模型共享,比如都选中第一个 或者第一个和第二个

    tree.setSelectionMode(QAbstractItemView::MultiSelection);
    list.setSelectionModel(tree.selectionModel());
    table.setSelectionModel(tree.selectionModel());

// 对事件进行响应,当左侧树被双击,分别对其余两个进行更新,那么第一个呢?

QObject::connect(&tree,SIGNAL(doubleClicked(QModelIndex)),&list,SLOT(setRootIndex(QModelIndex)));
    QObject::connect(&tree,SIGNAL(doubleClicked(QModelIndex)),&table,SLOT(setRootIndex(QModelIndex)));

    QSplitter *splitter = new QSplitter;
    splitter->addWidget(&tree);
    splitter->addWidget(&list);
    splitter->addWidget(&table);
    splitter->setWindowTitle(QObject::tr("Model/View"));
    splitter->show();

posted on 2022-12-21 15:47  NoNight  阅读(57)  评论(0编辑  收藏  举报