qt 自定义菜单栏 和 qchart 多轴的显示与隐藏

1、需求分析

  • 在工作中,是不是会有这种需求,单击一个按钮显示一个窗体,该窗体位置位于按钮下方
  • 当你坐标轴是多个数值轴,我只看一个图列的曲线,就会隐藏其他数值坐标轴。
  • 连接起来,就是单击一个按钮对图列进行筛选显示。

2、实施方法

  • 单击显示,用代码new 一个widget(dialog)等,在里面添加你想要的东西,设置好无边框,单击响应一个槽,把它移动到光标显示位置即可。
  • 第二个,new一个qmenu,添加动作即可。
  • 综合实现的逻辑,我选择了第二种

​​​​​​​3、代码实现

主代码cpp:

 //菜单初始化  

axisMenu = new QMenu(this);
    for (int i = 0; i < 5; i++) //我的有五条坐标轴
    {
        axisName[i] = new QAction(axisStr[i], this);//添加动作
        axisName[i]->setObjectName(axisOjbName[i]);  //设置对象名字
        axisName[i]->setIcon(QIcon(":/Flow/2.png"));//设置图标
        axisMenu->addAction(axisName[i]);
        connect(axisName[i], &QAction::triggered, this, &Flow::ChangeAxisY);//连接信号与槽
    }

//改变坐标轴

void Flow::ChangeAxisY()
{
    if (sender()->objectName() == "A")
        ChangeNum(0);
    else if(sender()->objectName() == "B")
        ChangeNum(1);
    else if (sender()->objectName() == "C")
        ChangeNum(2);
    else if (sender()->objectName() == "D")
        ChangeNum(3);
    else if (sender()->objectName() == "E")
        ChangeNum(4);
}

//显示 或者不显示
void Flow::ChangeNum(int num)
{
    flag[num] = !flag[num]; //取反
    if (flag[num])
    {
        axisName[num]->setIcon(QIcon(":/Flow/2.png"));
        axisY[num].setVisible(true);
        series[num].setVisible(true);
    }
    else
    {
        axisName[num]->setIcon(QIcon(":/Flow/1.png"));
        axisY[num].setVisible(false);
        series[num].setVisible(false);
    }
}

//  菜单栏的移动和显示

axisMenu->move(cursor().pos());  
        axisMenu->show();

4、效果显示

发布了7 篇原创文章 · 获赞 4 · 访问量 347

猜你喜欢

转载自blog.csdn.net/a1ngel/article/details/104029683