Reapply "tmpcode"

This reverts commit b3bc89aeda64e9174d78ee80ca40647cf62827dd.
This commit is contained in:
zhangsheng 2025-02-10 10:48:43 +08:00
parent b3bc89aeda
commit 923b95bca6
5 changed files with 422 additions and 72 deletions

90
doc/main.jsonc Normal file
View File

@ -0,0 +1,90 @@
[{
"slot":3,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":4,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":5,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":6,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":7,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":8,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":9,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":10,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":11,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":12,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":13,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":14,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":15,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":16,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
},
{
"slot":17,
"slot_type":0,
"chan_type":"acceleration",
"rack_type":"Single"
}]

View File

@ -1,15 +1,203 @@
#include "mainwindow.h" #include "mainwindow.h"
#include "ui_mainwindow.h" #include "ui_mainwindow.h"
#include <QDebug>
#include <QList>
MainWindow::MainWindow(QWidget *parent) MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent) : QMainWindow(parent)
, ui(new Ui::MainWindow) , ui(new Ui::MainWindow)
{ {
ui->setupUi(this); ui->setupUi(this);
btnGroup_slot = new QButtonGroup(this);
btnGroup_slot->addButton(ui->pushButton_slot3);
btnGroup_slot->addButton(ui->pushButton_slot4);
btnGroup_slot->addButton(ui->pushButton_slot5);
btnGroup_slot->addButton(ui->pushButton_slot6);
btnGroup_slot->addButton(ui->pushButton_slot7);
btnGroup_slot->addButton(ui->pushButton_slot8);
btnGroup_slot->addButton(ui->pushButton_slot9);
btnGroup_slot->addButton(ui->pushButton_slot10);
btnGroup_slot->addButton(ui->pushButton_slot11);
btnGroup_slot->addButton(ui->pushButton_slot12);
btnGroup_slot->addButton(ui->pushButton_slot13);
btnGroup_slot->addButton(ui->pushButton_slot14);
btnGroup_slot->addButton(ui->pushButton_slot15);
btnGroup_slot->addButton(ui->pushButton_slot16);
btnGroup_slot->addButton(ui->pushButton_slot17);
createMenu();
} }
MainWindow::~MainWindow() MainWindow::~MainWindow()
{ {
delete ui; delete ui;
} }
void MainWindow::createMenu()
{
QList<QAbstractButton*> buttonList = btnGroup_slot->buttons();
for (int i = 0; i < buttonList.count(); i++){
slot_type.insert(buttonList[i]->objectName(),"");
}
for (int i = 0; i < buttonList.count(); i++){
if(slot_type[buttonList[i]->objectName()] == "")
createMenu(QString("%1").arg(i + 1), (QPushButton*)buttonList[i]);
else
createMenuSet(QString("%1").arg(i + 1), (QPushButton*)buttonList[i]);
}
}
void MainWindow::createMenu(const QString& rootTitle, QPushButton* parent )
{
// 创建主菜单
qDebug() << "createMenu" << parent->objectName() << endl;
QMenu *mainMenu = new QMenu(rootTitle, parent);
// 创建第一层子菜单:/30 振电器模块
QMenu *monitors = new QMenu("监视器", mainMenu);
QMenu *relays = new QMenu("/30 继电器模块", mainMenu);
QMenu *keyphasor = new QMenu("/25 键相模块", mainMenu);
// 创建第二层子菜单:/40 振动板卡
QMenu *proximitor_menu = new QMenu("/40 振动板卡", monitors);
QMenu *rpm_menu = new QMenu("/50 转速板卡", monitors);
// 创建第三层子菜单:/40 单板卡、三冗余板卡
QAction *proximitor_1 = proximitor_menu->addAction("/40 单板卡");
QAction *proximitor_2 = proximitor_menu->addAction("/40 三冗余板卡");
QAction *rpm_1 = rpm_menu->addAction("/50 单板卡");
// 创建第二层子菜单:/25 键相模块
QAction *keyphasor_1 = keyphasor->addAction("/25 单板卡");
QAction *keyphasor_2 = keyphasor->addAction("/25 两板卡");
// 创建第二层子菜单:/30 继电器模块
QAction *relays_1 = relays->addAction("/30 单板卡");
QAction *relays_2 = relays->addAction("/30 三冗余板卡");
// 将子菜单加入上一级菜单
monitors->addMenu(proximitor_menu); // 将第二层加入第一层
monitors->addMenu(rpm_menu); // 第二层另一个子菜单
mainMenu->addMenu(monitors); // 将第一层加入主菜单
mainMenu->addMenu(relays);
mainMenu->addMenu(keyphasor);
QAction *reset = mainMenu->addAction("重置模块");
parent->setContextMenuPolicy(Qt::CustomContextMenu);
connect(parent,&QPushButton::customContextMenuRequested,[=](const QPoint &pos)
{
qDebug() << pos << endl;
mainMenu->exec(QCursor::pos());
});
// 连接所有菜单项
QObject::connect(proximitor_1, &QAction::triggered,this, &MainWindow::onMenuActionTriggered);
QObject::connect(proximitor_2, &QAction::triggered,this, &MainWindow::onMenuActionTriggered);
QObject::connect(rpm_1, &QAction::triggered,this, &MainWindow::onMenuActionTriggered);
QObject::connect(relays_1, &QAction::triggered,this, &MainWindow::onMenuActionTriggered);
QObject::connect(relays_2, &QAction::triggered,this, &MainWindow::onMenuActionTriggered);
QObject::connect(keyphasor_1, &QAction::triggered,this, &MainWindow::onMenuActionTriggered);
QObject::connect(keyphasor_2, &QAction::triggered,this, &MainWindow::onMenuActionTriggered);
QObject::connect(reset, &QAction::triggered,this, &MainWindow::onMenuActionTriggered);
}
void MainWindow::createMenuSet(const QString& rootTitle, QPushButton* parent )
{
// 创建主菜单
qDebug() << "createMenu" << parent->objectName() << endl;
QMenu *mainMenu = new QMenu(rootTitle, parent);
QAction *option = mainMenu->addAction("通道配置…");
QAction *set_points = mainMenu->addAction("触发配置…");
QAction *point_names = mainMenu->addAction("测点名称");
}
// 清除菜单中所有动作的属性
void MainWindow::clearMenuProperties(QMenu* menu)
{
// 遍历菜单的所有动作
if (!menu) {
qWarning() << "菜单为空,无法清除属性!";
return;
}
// 遍历菜单的所有动作
for (QAction* action : menu->actions()) {
if (!action) continue;
// 检查是否有子菜单
if (QMenu* subMenu = action->menu()) {
clearMenuProperties(subMenu); // 递归处理子菜单
}
// 清除动作的属性
action->setProperty("customProperty", QVariant());
qDebug() << "清除了属性,动作:" << action->text();
}
}
void MainWindow::onMenuActionTriggered()
{
qDebug() << "onMenuActionTriggered()" << endl;
QAction *action = qobject_cast<QAction*>(sender());
if (action) {
// 获取触发动作的父菜单
QMenu *menu = qobject_cast<QMenu*>(action->parent());
// 遍历所有父菜单,直到找到按钮
while (menu) {
QPushButton *button = qobject_cast<QPushButton*>(menu->parent());
if (button) {
qDebug() << "子菜单项被点击,所属按钮:" << button->objectName();
button->setText(action->text());
slot_type[button->objectName()] = action->text();
QMenu* menu = button->menu();
if (!menu) {
qWarning() << "菜单为空,无法清除属性!";
return;
}
clearMenuProperties(button->menu());
createMenu();
break; // 找到按钮后,跳出循环
}
// 如果没有找到按钮,继续向上查找
menu = qobject_cast<QMenu*>(menu->parent());
}
}
}
void MainWindow::OnButtonGroup(QAbstractButton * slot_btn, bool checked)
{
if(slot_btn != NULL)
{
qDebug() << slot_btn->objectName();
qDebug() << checked;
QString str;
QList<QAbstractButton*> buttonList = btnGroup_slot->buttons();
for (int i = 0; i < buttonList.count(); i++){
}
}
}
void MainWindow::on_pushButton_slot_clicked()
{
}
void MainWindow::on_pushButton_chan_clicked()
{
}
void MainWindow::on_pushButton_alarm_clicked()
{
}
void MainWindow::on_pushButton_point_name_clicked()
{
}

View File

@ -2,6 +2,9 @@
#define MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow> #include <QMainWindow>
#include <QMap>
#include <QButtonGroup>
#include <QPushButton>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; } namespace Ui { class MainWindow; }
@ -17,5 +20,32 @@ public:
private: private:
Ui::MainWindow *ui; Ui::MainWindow *ui;
QAction * action_menu_monitors;
QAction * action_menu_keyphasor;
QAction * action_menu_relays;
QAction * action_menu_reset;
//声明菜单
QMenu * button_menu;
QMap<QString,QString> slot_type;
QButtonGroup * btnGroup_slot = nullptr;
void createMenu();
void createMenu(const QString& rootTitle, QPushButton* button = nullptr);
void createMenuSet(const QString& rootTitle, QPushButton* button = nullptr);
void clearMenuProperties(QMenu* menu);
private slots:
void OnButtonGroup(QAbstractButton *, bool);
void onMenuActionTriggered();
void on_pushButton_slot_clicked();
void on_pushButton_chan_clicked();
void on_pushButton_alarm_clicked();
void on_pushButton_point_name_clicked();
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H

View File

@ -259,7 +259,7 @@
<number>9</number> <number>9</number>
</property> </property>
<item> <item>
<widget class="QPushButton" name="pushButton"> <widget class="QPushButton" name="pushButton_slot">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>
@ -272,7 +272,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_2"> <widget class="QPushButton" name="pushButton_chan">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>
@ -285,7 +285,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_3"> <widget class="QPushButton" name="pushButton_alarm">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>
@ -298,7 +298,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_4"> <widget class="QPushButton" name="pushButton_point_name">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>
@ -368,7 +368,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>电源</string> <string>1</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -390,7 +390,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>1</string> <string>2</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -412,7 +412,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>2</string> <string>3</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -434,7 +434,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>3</string> <string>4</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -456,7 +456,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>4</string> <string>5</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -478,7 +478,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>5</string> <string>6</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -500,7 +500,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>6</string> <string>7</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -522,7 +522,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>7</string> <string>8</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -544,7 +544,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>8</string> <string>9</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -566,7 +566,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>9</string> <string>10</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -588,7 +588,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>10</string> <string>11</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -610,7 +610,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>11</string> <string>12</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -632,7 +632,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>12</string> <string>13</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -654,7 +654,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>13</string> <string>14</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -676,7 +676,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>14</string> <string>15</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -698,7 +698,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>15</string> <string>16</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -720,7 +720,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>16</string> <string>17</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -790,7 +790,51 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_5"> <widget class="QPushButton" name="pushButton_slot3">
<property name="minimumSize">
<size>
<width>50</width>
<height>280</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>280</height>
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::DefaultContextMenu</enum>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_slot4">
<property name="minimumSize">
<size>
<width>50</width>
<height>280</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>280</height>
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::DefaultContextMenu</enum>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_slot5">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>
@ -809,7 +853,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_6"> <widget class="QPushButton" name="pushButton_slot6">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>
@ -828,7 +872,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_7"> <widget class="QPushButton" name="pushButton_slot7">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>
@ -847,7 +891,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_8"> <widget class="QPushButton" name="pushButton_slot8">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>
@ -866,7 +910,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_12"> <widget class="QPushButton" name="pushButton_slot9">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>
@ -885,7 +929,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_9"> <widget class="QPushButton" name="pushButton_slot10">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>
@ -904,7 +948,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_10"> <widget class="QPushButton" name="pushButton_slot11">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>
@ -923,7 +967,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_11"> <widget class="QPushButton" name="pushButton_slot12">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>
@ -942,7 +986,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_14"> <widget class="QPushButton" name="pushButton_slot13">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>
@ -961,7 +1005,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_13"> <widget class="QPushButton" name="pushButton_slot14">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>
@ -980,7 +1024,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_15"> <widget class="QPushButton" name="pushButton_slot15">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>
@ -999,7 +1043,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_16"> <widget class="QPushButton" name="pushButton_slot16">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>
@ -1018,45 +1062,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_19"> <widget class="QPushButton" name="pushButton_slot17">
<property name="minimumSize">
<size>
<width>50</width>
<height>280</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>280</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_17">
<property name="minimumSize">
<size>
<width>50</width>
<height>280</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>280</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_18">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>50</width>

View File

@ -1219,6 +1219,42 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="layoutWidget_9">
<property name="geometry">
<rect>
<x>340</x>
<y>210</y>
<width>45</width>
<height>62</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QToolButton" name="toolButton_16">
<property name="text">
<string>===&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_22">
<property name="text">
<string>=</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButton_17">
<property name="text">
<string>&lt;===</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget> </widget>
<resources/> <resources/>
<connections/> <connections/>