没有下拉菜单的 Qt 菜单栏(单级菜单栏)

Posted

技术标签:

【中文标题】没有下拉菜单的 Qt 菜单栏(单级菜单栏)【英文标题】:Qt menu bar without pull down menus (single level menu bar) 【发布时间】:2015-09-14 11:18:11 【问题描述】:

我想在 Qt 中有一个单级菜单小部件,它看起来像一个常规菜单栏,但在单击菜单栏上的项目时不显示下拉菜单。我的应用程序只需要几个选项,单行菜单栏,单击或单快捷键激活似乎是最合适的。

我不想要一个工具栏或一排按钮。我不想设计图标,我更喜欢每个选项的简单文本,并带有下划线的快捷键。

我应该使用QMenu 或其他方式来实现吗?

【问题讨论】:

【参考方案1】:

我敢肯定,QToolBar 就是您要找的。它是一个工具栏,就像您从 IDE 或 Photoshop 程序中了解的那样,它使用图标或文本显示选项。

代码示例

class MainWindow : public QMainWindow

  Q_OBJECT
public:
  MainWindow( QWidget* parent = 0 ) : QMainWindow(parent)
  
    QToolBar* toolBar1 = new QToolBar(this);

    QAction* action1 = toolBar1->addAction("one");
    QObject::connect( action1, SIGNAL(triggered()), this, SLOT(onActionOne()));
    action1->setShortcut(QKeySequence("ctrl+o"));   

    QAction* action2 = toolBar1->addAction("two");
    QObject::connect( action2, SIGNAL(triggered()), this, SLOT(onActionTwo()));
    action2->setShortcut(QKeySequence("ctrl+t"));

    addToolBar(Qt::TopToolBarArea, toolBar1);
  

public slots:
  void onActionOne() std::cout << "Action one!" << std::endl; 
  void onActionTwo() std::cout << "Action Two!" << std::endl; 
;

【讨论】:

我不想设计图标,我更喜欢带有下划线快捷键的简单文本。我正在编辑我的问题以明确说明。 也可以。只需使用 QToolBar 的addAction(const QString&amp;) 方法即可。返回的操作指针可以使用操作toggled(bool) 信号连接到插槽 信号triggered(),而不是toggled(bool) 我还没有实现的是如何在 QToolBar 按钮的名称中为单个字符下划线。 我也不知道如何强调它。我将其发布为new question。

以上是关于没有下拉菜单的 Qt 菜单栏(单级菜单栏)的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 导航栏,新的下拉菜单不会关闭移动视图中已打开的下拉菜单

导航栏中的用户菜单下拉菜单

jquery实现简易大气3D导航下拉菜单菜单栏效果

Twitter引导导航栏和下拉菜单-不调整大小

下拉菜单样式问题

如何让导航栏下拉菜单与身体重叠?