1. void MainWindow::contextMenuEvent(QContextMenuEvent *event)
    2. {
    3. QMenu* menu = new QMenu;
    4. menu->setAttribute(Qt::WA_DeleteOnClose);
    5. menu->addAction(QIcon(":/icon"), tr("create"));
    6. menu->addAction(QIcon(":/icon"), tr("retrive"));
    7. menu->addAction(QIcon(":/icon"), tr("update"));
    8. menu->addAction(QIcon(":/icon"), tr("delete"));
    9. menu->popup(QCursor::pos());
    10. }

    值得注意的是需要设置 menu->setAttribute(Qt::WA_DeleteOnClose);否则会有内存泄露。
    测试不加此属性,每弹出一次菜单,都会泄露0.1MB的内存,耗费还是比较大的.