Заставить мои перечисленные элементы в QListview излучать сигналы при нажатии - PullRequest
0 голосов
/ 02 мая 2018

Я хочу, чтобы каждый элемент, указанный в QTableview, при нажатии генерировал сигнал, который, например, открывает диалоговое окно. Мне нужна помощь в этом

 QFileSystemModel *listModel = new QFileSystemModel(this);
    QString directory = "/home/uboho/monitor_test_module/logs/tmp/etc/nodes";
    ui->clusterList->setModel(listModel);
    ui->clusterList->setRootIndex(listModel->setRootPath(directory));
    ui->clusterList->
          setEditTriggers(QAbstractItemView::AnyKeyPressed |
                         QAbstractItemView::DoubleClicked);

}

    bool displayTable::DoubleClicked (const QModelIndex index )
    {
        QDialog * test = new QDialog();
        test->show();
    }

1 Ответ

0 голосов
/ 03 мая 2018

QTableView наследует QAbstractItemView, который излучает сигнал clicked. Вы можете зарегистрировать слот / обратный вызов, который создает всплывающее окно с объектом QTableView для сигнала щелчка.

// Qt 5
connect(theQTableView, &QAbstractItemView::clicked,
        theCallbackReceiver, &CallbackReceiver::clickedCallback);

// Qt 4
connect(theQTableView, SIGNAL(clicked(QModelIndex)),
        theCallbackReceiver, SLOT(clickedCallback(QModelIndex)));

С помощью параметра index сигнала clicked вы можете узнать, по какому элементу был нажат.

...