当前位置:   article > 正文

Qt菜单栏、状态栏、工具栏_qt 底部菜单栏

qt 底部菜单栏

菜单栏、工具栏、状态栏

主窗口框架(QMainWindow)拥有自己的布局,包括以下组件:

菜单栏

菜单栏包含了一个下拉菜单项的列表,这些菜单项通过QAction动作类实现。一个主窗口只能有一个菜单栏。

工具栏

工具栏一般用于常用的菜单项,也可以插入其他窗口部件,一个主窗口可以拥有多个工具栏。

中心部件

主窗口中心区域可以放入一个窗口部件作为中心部件,是应用程序的主要功能实现区域,一个主窗口只能有一个中心部件。

dock部件

dock部件又称为停靠部件,或停靠窗口,可停靠在窗口部件的四周,用来设置一些部件来实现一些功能,类似一个工具箱,一个主窗口可拥有多个dock部件。

状态栏

状态栏用于显示程序的一些状态信息,在主窗口的最底下,一个主窗口只能拥有一个状态栏。

菜单栏、工具栏、状态栏

代码添加示例。

  1. //菜单
  2. QMenu* editMenu = ui->menuBar->addMenu("编辑(&E)");
  3. QAction *action_copy = editMenu->addAction(QIcon("test.png"),QString("复制(&C)"));
  4. action_copy->setShortcut(QKeySequence("Ctrl+C"));
  5. //添加到主窗口工具栏——工具栏添加动作按钮
  6. ui->mainToolBar->addAction(action_copy);
  7. //动作按钮组,互斥选项,只能选择这其中的一个
  8. QActionGroup* group = new QActionGroup(this);
  9. QAction* action_L = group->addAction("左对齐(&L)");
  10. QAction* action_R = group->addAction("右对齐(&R)");
  11. QAction* action_C = group->addAction("居中对齐(&C)");
  12. QAction* action_J = group->addAction("两端对齐(&J)");
  13. //设置可选
  14. action_L->setCheckable(true);
  15. action_R->setCheckable(true);
  16. action_C->setCheckable(true);
  17. action_J->setCheckable(true);
  18. //菜单栏中添加分隔线
  19. editMenu->addSeparator();
  20. //添加到窗口菜单
  21. editMenu->addAction(action_L);
  22. editMenu->addAction(action_R);
  23. editMenu->addAction(action_C);
  24. editMenu->addAction(action_J);
  25. // 工具栏添加部件
  26. QToolButton* toolBtn = new QToolButton(this);
  27. toolBtn->setText("颜色");
  28. QMenu* colorMenu = new QMenu(this);
  29. colorMenu->addAction("红色");
  30. colorMenu->addAction("绿色");
  31. toolBtn->setMenu(colorMenu);
  32. //设置模式为弹出式菜单
  33. toolBtn->setPopupMode(QToolButton::MenuButtonPopup);
  34. ui->mainToolBar->addWidget(toolBtn);
  35. //添加调节大小窗口
  36. QSpinBox* spinBox = new QSpinBox(this);
  37. ui->mainToolBar->addWidget(spinBox);
  38. //显示临时信息
  39. ui->statusBar->showMessage(QString("欢迎......"),3000);
  40. //添加状态栏永久显示
  41. QLabel* tag = new QLabel("https://doraemon-hub-art.github.io");
  42. ui->statusBar->addPermanentWidget(tag);

自定义菜单栏

自定义菜单需要定义一个继承QWidgetAction的类, 并重写createWidget方法,在该方法中自定义部件设置。

示例MyAction.h

  1. #ifndef MYACTION_H
  2. #define MYACTION_H
  3. #include<QWidgetAction>
  4. #include<QLineEdit>
  5. class MyAction : public QWidgetAction
  6. {
  7. Q_OBJECT
  8. public:
  9. MyAction(QObject* parent = 0);
  10. protected:
  11. QWidget* createWidget(QWidget* parent);
  12. signals:
  13. void getText(const QString& string);
  14. private slots:
  15. void sendText();
  16. private:
  17. QLineEdit* lineEdit;
  18. };
  19. #endif // MYACTION_H

MyAction.cpp

  1. #include "myaction.h"
  2. #include<QSplitter>
  3. #include<QLabel>
  4. MyAction::MyAction(QObject* parent):QWidgetAction(parent)
  5. {
  6. lineEdit = new QLineEdit;
  7. connect(lineEdit,&QLineEdit::returnPressed,this,&MyAction::sendText);
  8. }
  9. QWidget *MyAction::createWidget(QWidget *parent)
  10. {
  11. //是否继承自菜单或者工具栏
  12. //是则创建父部件的子部件并返回子部件
  13. if(parent->inherits("QMenu")||parent->inherits("QToolBar"))
  14. {
  15. QSplitter * splitter = new QSplitter(parent);
  16. QLabel* label = new QLabel("插入文本:");
  17. splitter->addWidget(label);
  18. splitter->addWidget(lineEdit);
  19. return splitter;
  20. }
  21. }
  22. void MyAction::sendText()
  23. {
  24. emit getText(lineEdit->text());
  25. lineEdit->clear();
  26. }

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号