int main(int argc, char *argv[]) { QApplication app(argc, argv); qRegisterMetaType<Error>(); ThreadedParser parser; Memcheck::MemcheckRunner runner; runner.setValgrindExecutable(fakeValgrindExecutable()); runner.setValgrindArguments(QStringList() << QLatin1String("-i") << dataFile(QLatin1String("memcheck-output-sample1.xml")) ); runner.setParser(&parser); ModelDemo demo(&runner); runner.connect(&runner, SIGNAL(finished()), &demo, SLOT(finished())); ErrorListModel model; parser.connect(&parser, SIGNAL(error(Valgrind::XmlProtocol::Error)), &model, SLOT(addError(Valgrind::XmlProtocol::Error)), Qt::QueuedConnection); QTreeView errorview; errorview.setSelectionMode(QAbstractItemView::SingleSelection); errorview.setSelectionBehavior(QAbstractItemView::SelectRows); errorview.setModel(&model); errorview.show(); StackModel stackModel; demo.stackModel = &stackModel; QTreeView stackView; stackView.setModel(&stackModel); stackView.show(); errorview.connect(errorview.selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), &demo, SLOT(selectionChanged(QItemSelection,QItemSelection))); runner.start(); return app.exec(); }