QTextBrowser的右键单击上下文菜单

问题描述 投票:0回答:1

我正在尝试为我在Qt应用程序中拥有的QTextBrowser添加自定义contextMenu,但是它似乎不起作用。

我正在使用下面为Element QLineEdit定义的链接中解释的步骤,但是它不起作用。

extend-the-standard-context-menu-of-qtextedit

编辑:

我在MainWindow的构造函数中编写的以下代码:

QDockWidget *dock = new QDockWidget(tr("Text View"), this);
txtBrwsr = new QTextBrowser(this);
dock->setWidget(txtBrwsr);

txtBrwsr->setContextMenuPolicy(Qt::CustomContextMenu);
connect(txtBrwsr,SIGNAL(customContextMenuRequested(const QPoint&)), this,SLOT(showContextMenu(const QPoint&)));
setCentralWidget(txtBrwsr);

以下是showContextMenu函数的实现:

void AMTMainWindow::showContextMenu(const QPoint &pt) {

    QMenu * menu = txtBrwsr->createStandardContextMenu();
    QMenu * tags;
    tags = menu->addMenu(tr("&Tag"));
    for(int i=0; i<_atagger->tagTypeVector->count(); i++) {
        QAction * taginstance;
        char * tagValue = (_atagger->tagTypeVector->at(i)).tag.toLocal8Bit().data();
        taginstance = new QAction(tr(tagValue), this);
        connect(taginstance, SIGNAL(triggered()), this, SLOT(tag(tagValue)));
        tags->addAction(taginstance);
    }
    menu->addAction(untagAct);
    menu->addAction(addtagAct);
    menu->exec(txtBrwsr->mapToGlobal(pt));
    delete menu;
}

经过一些调试后,我发现当我按右键打开上下文菜单时,甚至没有触发showContextMenu函数。所以我认为主要问题在于连接功能。

感谢您的任何帮助。

qt contextmenu qtextbrowser
1个回答
1
投票

您在此处创建菜单后立即将其删除:

[...]
menu->addAction(addtagAct);
menu->exec(txtBrwsr->mapToGlobal(pt));

delete menu;

© www.soinside.com 2019 - 2024. All rights reserved.