gpt4 book ai didi

c++ - QTableWidget - QMenu 上下文菜单 - AddAction 插槽不调用函数

转载 作者:行者123 更新时间:2023-11-28 03:14:51 27 4
gpt4 key购买 nike

我正在尝试通过嵌入在 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));
}

更新:

没有传递参数的插槽似乎在工作,但没有传递参数的插槽

最佳答案

SLOT(exportCase(cell.row()))) 不是有效的 connect 参数。 SLOT() 宏中传递的字符串必须包含槽的名称及其参数类型。您不能直接传递参数值。因此,如果您的插槽接受 int 参数,则语句将为 SLOT(exportCase(int))

不仅如此,您不能将信号连接到具有不匹配参数的插槽。 QMenu::addAction 将您的插槽连接到 QAction::triggered(bool) 信号。因此,您只能使用不带参数的槽或带单个 bool 参数的槽。

可以使用 connect() 的返回值检测任何运行时 connect 问题。如果您遇到一些问题,最好检查一下。此外,Qt Creator 的自动完成功能可以帮助您使用 SIGNAL()SLOT() 宏。

另见 connect documentation .

关于c++ - QTableWidget - QMenu 上下文菜单 - AddAction 插槽不调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17241948/

27 4 0