.h

    1. #ifndef FLOWMETERCONFIG_H
    2. #define FLOWMETERCONFIG_H
    3. #include <QMainWindow>
    4. #include <QPushButton>
    5. #include <QMenu>
    6. namespace Ui {
    7. class FlowmeterConfig;
    8. }
    9. class FlowmeterConfig : public QMainWindow
    10. {
    11. Q_OBJECT
    12. public:
    13. explicit FlowmeterConfig(QWidget *parent = 0);
    14. ~FlowmeterConfig();
    15. private:
    16. Ui::FlowmeterConfig *ui;
    17. QPushButton *btn_show;
    18. QPushButton *btn_demar;
    19. // 创建显示按钮的下拉按钮
    20. void create_clickButton_show();
    21. // 创建标定按钮的下拉按钮
    22. void create_clickButton_demar();
    23. // 显示
    24. QAction *menu_1; // 显示按钮
    25. QAction *menu_2; // 多仪表显示
    26. // 标定
    27. QAction *menu_3; // 标定
    28. QAction *menu_4; // 多表标定
    29. public slots:
    30. // 显示
    31. void onMenu_1_Triggered(QAction *action);
    32. // 标定
    33. void onMenu_2_Triggered(QAction *action);
    34. };
    35. #endif // FLOWMETERCONFIG_H

    .cpp

    1. #include "flowmeterconfig.h"
    2. #include "ui_flowmeterconfig.h"
    3. #include <QPushButton>
    4. #include <QToolBar>
    5. #include <QDebug>
    6. #include <QMouseEvent>
    7. FlowmeterConfig::FlowmeterConfig(QWidget *parent) :
    8. QMainWindow(parent),
    9. ui(new Ui::FlowmeterConfig)
    10. {
    11. ui->setupUi(this);
    12. // 创建工具栏
    13. QToolBar *toolBar = new QToolBar(this);
    14. // 将工具栏添加到视图上
    15. addToolBar(Qt::TopToolBarArea, toolBar);
    16. // 只允许上停靠
    17. toolBar->setAllowedAreas(Qt::TopToolBarArea);
    18. // 设置浮动操作
    19. toolBar->setFloatable(false);
    20. // 设置移动 (相当于总开关)
    21. toolBar->setMovable(false);
    22. QPushButton *btn_com = new QPushButton("通讯", this);
    23. toolBar->addWidget(btn_com);
    24. btn_show = new QPushButton("显示", this);
    25. toolBar->addWidget(btn_show); // 将按钮添加到界面
    26. create_clickButton_show(); // 创建显示按钮的下拉按钮
    27. QPushButton * btn_config = new QPushButton("配置", this);
    28. toolBar->addWidget(btn_config);
    29. btn_demar = new QPushButton("标定", this);
    30. toolBar->addWidget(btn_demar);
    31. create_clickButton_demar(); // 创建标定按钮的下拉按钮
    32. QPushButton * btn_help = new QPushButton("帮助", this);
    33. toolBar->addWidget(btn_help);
    34. }
    35. FlowmeterConfig::~FlowmeterConfig()
    36. {
    37. delete ui;
    38. }
    39. // 创建显示按钮的下拉按钮
    40. void FlowmeterConfig::create_clickButton_show()
    41. {
    42. QMenu * menu = new QMenu(this);
    43. connect(menu,SIGNAL(triggered(QAction *)),this,SLOT(onMenu_1_Triggered(QAction *)));
    44. menu_1 = new QAction(btn_show);
    45. menu_2 = new QAction(btn_show);
    46. menu->addAction(menu_1);
    47. menu->addAction(menu_2);
    48. menu_1->setText(tr("显示数据"));
    49. menu_2->setText(tr("多仪表显示"));
    50. btn_show->setMenu(menu);
    51. }
    52. // 判断点击了哪个按钮
    53. void FlowmeterConfig::onMenu_1_Triggered(QAction *action)
    54. {
    55. if (action == menu_1)
    56. {
    57. qDebug()<<"1";
    58. }
    59. else if (action == menu_2)
    60. {
    61. qDebug()<<"2";
    62. }
    63. }
    64. // 创建标定按钮的下拉按钮
    65. void FlowmeterConfig::create_clickButton_demar()
    66. {
    67. QMenu * menu = new QMenu(this);
    68. connect(menu,SIGNAL(triggered(QAction *)),this,SLOT(onMenu_2_Triggered(QAction *)));
    69. menu_3 = new QAction(btn_show);
    70. menu_4 = new QAction(btn_show);
    71. menu->addAction(menu_3);
    72. menu->addAction(menu_4);
    73. menu_3->setText(tr("标定"));
    74. menu_4->setText(tr("多表标定"));
    75. btn_demar->setMenu(menu);
    76. }
    77. // 判断点击了哪个按钮
    78. void FlowmeterConfig::onMenu_2_Triggered(QAction *action)
    79. {
    80. if (action == menu_3)
    81. {
    82. qDebug()<<"3";
    83. }
    84. else if (action == menu_4)
    85. {
    86. qDebug()<<"4";
    87. }
    88. }

    在其他地方设置下拉框
    image.png