QTableWidget — Контекстное меню QMenu — Слоты AddAction, не вызывающие функции

Я пытаюсь вызвать функцию через контекстное меню, встроенное в QTablewidget. Он не вызывает функцию в слоте. Могу ли я что-то упустить? Контекстные меню появляются, но нажатие ничего не дает.

    QMenu *contextMenu = new QMenu;
QModelIndex cell = ui->tableWidget->indexAt(pos);

if(cell.isValid())

{
contextMenu->addAction("Burn Case", this, SLOT(burnCase()));

contextMenu->addAction("Export Case", this, SLOT(exportCase(cell.row())));

contextMenu->addAction("Delete Case", this, SLOT(deleteCase(cell.row())));

contextMenu->exec(ui->tableWidget->mapToGlobal(pos));
}

ОБНОВИТЬ:

Слот без передаваемого параметра, похоже, работает, но не с параметрами

0

Решение

SLOT(exportCase(cell.row()))) не является действительным connect аргумент. Строка передана в SLOT() макрос должен содержать имя слота и типы его аргументов. Вы не можете передавать значения аргумента напрямую. Итак, если ваш слот принимает int аргумент, заявление будет SLOT(exportCase(int)),

Более того, вы не можете подключить сигнал к слоту с несовпадающими аргументами. QMenu::addAction подключает ваш слот к QAction::triggered(bool) сигнал. Таким образом, вы можете использовать только слот без аргументов или слот с одним bool аргумент.

Любое время выполнения connect проблемы могут быть обнаружены с помощью возвращаемого значения connect(), Вам лучше проверить это, если вы испытываете некоторые проблемы. Кроме того, автозаполнение Qt Creator может помочь вам использовать SIGNAL() а также SLOT() макросы.

Смотрите также подключить документацию.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]