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、效果显示

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Qt是一个功能强大的跨平台C++框架,可以用来开发图形用户界面应用程序。在Qt中,我们可以自定义应用程序的标题栏和边框。 自定义标题栏通常需要采用以下步骤来实现: 1. 使用Qt的窗口样式表(QSS)来定义标题栏的外观。我们可以设置标题栏的背景颜色、字体、边框等属性,可以自定义按钮的样式、位置和功能等。 2. 使用Qt的信号和槽机制来处理标题栏按钮的点击事件。通过连接按钮的clicked()信号到我们自定义的槽函数,我们可以实现关闭、最小化、最大化等按钮的功能。 3. 在窗口的构造函数中去掉自带的标题栏。我们可以使用setWindowFlags()函数来设置窗口的属性,将窗口的标题栏隐藏掉。 自定义边框通常需要采用以下步骤来实现: 1. 设置窗口的边框样式。我们可以使用setStyleSheet()函数来设置窗口的外观,包括边框颜色、线条粗细等。 2. 自定义边框的绘制。我们可以使用Qt的绘图功能来绘制窗口的边框,可以通过重写窗口的paintEvent()函数,在窗口绘制时添加绘制边框的代码。 3. 处理边框的拖动事件。我们可以重写窗口的mousePressEvent()、mouseMoveEvent()和mouseReleaseEvent()函数,实现窗口的拖动功能。 总之,Qt提供了丰富的功能和灵活的API来自定义应用程序的标题栏和边框。开发者可以根据自己的需求来定制应用程序的外观,使其更加个性化和美观。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值