没有下拉菜单的 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&)
方法即可。返回的操作指针可以使用操作toggled(bool)
信号连接到插槽
信号triggered()
,而不是toggled(bool)
。
我还没有实现的是如何在 QToolBar 按钮的名称中为单个字符下划线。
我也不知道如何强调它。我将其发布为new question。以上是关于没有下拉菜单的 Qt 菜单栏(单级菜单栏)的主要内容,如果未能解决你的问题,请参考以下文章