我可以决定将Qaction添加到Qmenubar的位置

时间:2009-11-25 18:42:51

标签: qt

我需要将QAction直接添加到QMenuBar中(不是QMenu中的QAction,而是直接在QMenuBar中的QAction)我可以使用以下命令执行此操作。

ui-> menuBar-> addAction(“VFTP”,this,SLOT(VFTPmenuTrigger()));

我唯一的问题是,当我添加它时,它会附加到我在Qt设计器中构建的菜单栏的末尾。我希望能把它放在中间的某个地方。似乎我能做到这一点的唯一方法就是我只通过编码生成菜单栏。有没有办法在Qt Designer中构建我的大部分menuBar,然后在我想要的菜单栏中添加该Qaction?我希望我很清楚,并且我以编程方式添加了QAction,因为Qt不可能这样做(我知道将QAction直接放在菜单栏中听起来很有意义,但这是客户想要的)

1 个答案:

答案 0 :(得分:2)

如果您查看QMenuBar代码,则表明它会执行此操作:

QAction *QMenuBar::addAction(const QString &text, const QObject *receiver, const char* member)
{
    QAction *ret = new QAction(text, this);
    QObject::connect(ret, SIGNAL(triggered(bool)), receiver, member);
    addAction(ret);
    return ret;
}

基本上使用QWidget::addAction()。因此,您可以自己使用QWidget::insertAction()来做同样的事情。 insertAction()允许您在要添加的QAction之前指定。