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

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

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

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

【问题讨论】:

    标签: c++ qt user-interface menu


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2016-08-06
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    相关资源
    最近更新 更多