在菜单栏中创建带有文本的分隔符

Posted

技术标签:

【中文标题】在菜单栏中创建带有文本的分隔符【英文标题】:Create a separator with a text in the menubar 【发布时间】:2015-11-20 07:02:57 【问题描述】:

图片http://doc.qt.io/qt-4.8/qactiongroup.html#details 中的文档显示了我想要的内容,但我不知道该怎么做。我可以通过

创建一个分隔符
QAction * separator = new QAction("This is ignored", actionGroup);
separator->setSeparator(true);

但它只是一条线。示例中的action是如何添加“Alignment”文本的?

【问题讨论】:

qtforum.org/article/32038/labeled-menu-separators.html 【参考方案1】:

这可以使用 QLabelQWidgetAction 来完成(例如在 python 中):

label = QtGui.QLabel("<b>At least it is rich text!</b>")

label_action = QtGui.QWidgetAction(self)
label_action.setDefaultWidget(label)

menu.addAction(label_action)

【讨论】:

【参考方案2】:

按照您的链接,然后到“菜单”示例链接(您的示例从中摘录),然后到 mainwindow.cpp(这是该示例的源文件之一),我到达:http://doc.qt.io/qt-4.8/qt-mainwindows-menus-mainwindow-cpp.html

该源文件中的最后一个函数是 createMenus,其中包含以下内容:

formatMenu = editMenu->addMenu(tr("&Format"));
formatMenu->addAction(boldAct);
formatMenu->addAction(italicAct);
formatMenu->addSeparator()->setText(tr("Alignment"));
formatMenu->addAction(leftAlignAct);
formatMenu->addAction(rightAlignAct);
formatMenu->addAction(justifyAct);
formatMenu->addAction(centerAct);
formatMenu->addSeparator();
formatMenu->addAction(setLineSpacingAct);
formatMenu->addAction(setParagraphSpacingAct);

重要的一点是:setText中的第四行,addSeparator()添加的分隔符

【讨论】:

好吧。尝试使用 addSepatarator()->setText("Whatever"); 遵循 Qt 5.6 中的文档示例;不起作用。分隔符仍然没有文字。 可能与风格有关

以上是关于在菜单栏中创建带有文本的分隔符的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Tkinter 中创建垂直菜单栏?

Java----如何在窗口中创建菜单

如何在 QMainWindow 中创建菜单栏

如何使用数据库在 Laravel 中创建动态菜单栏

在 JavaFX 中制作垂直菜单栏

在 Monomac/Xamarin C# 中创建无窗口菜单栏图标应用程序