我正在尝试使用以下代码向树添加上下文菜单:
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')
我做错了什么?
答案 0 :(得分:3)
我做错了什么?
如果省略将插槽声明为实际插槽,则可能会发生这种情况。您可以使用Q_SLOTS
宏,也可以只使用slots
。在你的情况下,后者更合适,因为它只是一个应用程序和一个主窗口。
您还需要确保不要忘记在头文件中使用Q_OBJECT
宏。