c++ - 为什么 Qt 看不到我的插槽?

标签 c++ qt qobject qtcore qt-signals

我正在尝试使用以下代码将上下文菜单添加到树中:

void MainWindow::FileTreeContextMenu(const QPoint& pos)
{
    QPoint globalPos = ui->fileTree->viewport()->mapToGlobal(pos);
    QMenu menu;
    menu.addAction("New Group");

    QAction* selectedItem = menu.exec(globalPos);
}

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->fileTree->setContextMenuPolicy(Qt::CustomContextMenu);
    connect(ui->fileTree,
            SIGNAL(customContextMenuRequested(const QPoint&)),
            this,
            SLOT(FileTreeContextMenu(const QPoint&)));
}

但是,当我运行它时,出现以下错误:

QObject::connect: No such slot MainWindow::FileTreeContextMenu(const QPoint&) 
  in ..\src\Fixer\mainwindow.cpp:23
QObject::connect:  (sender name:   'fileTree')
QObject::connect:  (receiver name: 'MainWindow')

我做错了什么?

最佳答案

What am I doing wrong?

如果您忽略将插槽声明为真实插槽,则可能会发生这种情况。您可以为此使用 Q_SLOTS 宏,也可以只使用 slots。在您的情况下,后者更合适,因为它只是一个应用程序和一个主窗口。

您还需要确保不要忘记在头文件中使用 Q_OBJECT 宏。

关于c++ - 为什么 Qt 看不到我的插槽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20770402/

相关文章:

c++ - 矩阵乘法作为列专业

c++ - remove_if 比较同一 vector 中的两个元素

c++ - 接收用户输入

qt - 崩溃后如何重新启动qt应用程序?

c++ - 如何将 C++ 属性绑定(bind)到 QML 属性?

c++ - 为什么 QList 不是从 QObject 派生的?

c++ - Windows中是否有任何内存虚拟文件API?

c++ - 在 Windows 中用 C++ 开发一个 P2P 网络项目,该项目应该可以在 Linux 中运行

c++ - 在 Qt5.8 中使用 pdf.js

c++ - 遇到自定义 QObject 的 QVariantLists 和 QLists 的问题