在Qt中连接自定义上下文菜单

时间:2012-11-21 08:33:17

标签: qt contextmenu connect

我在QListWidget中连接自定义菜单时出现问题,connect函数返回false。这是代码:

我有一个名为MainWindow的主窗口类。在它的构造函数中,我有这一行

connect(ui->notesWidget, SIGNAL(customContextMenuRequested(QPoint &)), 
        this, SLOT(contextMenuforNotesArea(QPoint &)));

其中提到notesWidget QListWidget

ContextMenuforNotesArea(QPoint &)定义如下

class MainWindow : public QMainWindow
{
public slots:
    void contextMenuforNotesArea(QPoint &pos);
};

void MainWindow::contextMenuforNotesArea(const QPoint &pos){
    QMessageBox::information(this, "a", "the function has been finally called");
    QMenu contextMenu(tr("Context menu"), this);
    contextMenu.addAction(new QAction(tr("Hello"), this));
    contextMenu.exec(mapToGlobal(pos));
}

我还通过表单设计器将contextMenu中的属性listWidget更改为customContextMenu

1 个答案:

答案 0 :(得分:0)

在头文件

中更改您的SLOT签名,如下所示
void contextMenuforNotesArea(const QPoint &pos);

还要确保在构造函数中进行连接时,在调用setupUi之后执行此操作