Почему Qt не видит мой слот?
Я пытаюсь добавить контекстное меню в дерево с помощью следующего кода:
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')
Что я делаю неправильно?
1 ответ
Решение
Что я делаю неправильно?
Это может произойти, если вы пропустите объявление слота как реального слота. Вы можете использовать Q_SLOTS
макросы для этого или просто slots
, В вашем случае последнее более адекватно, потому что это просто приложение и главное окно.
Вы также должны убедиться, что вы не забыли использовать Q_OBJECT
макрос в вашем заголовочном файле.