QT用QPushButton控件实现开关(启动/关闭)效果

1.先看效果图

实现效果介绍:

启动/禁用按键为一组开关按键,点击任一个按键都会同时改变双方的点击状态,相较于只能单一点击其中一个按键改变单一按键的状态有很大优点。

2.代码实现

(1) 样式制作

效果图中的启动和禁用按键分别是QPushButton,这两个按键组成水平布局再加入到一个widget中,直接跳过。

按键样式

for(int i =0;i<2;i++){
    button[i] = new QPushButton();
    button[i]->setFixedSize(100,60);
    QList <QString>list;
    list<<"启动"<<"禁用";
    button[i]->setText(list[i]);
    button[i]->setFont(font3);
    switch (i) {
    case 0:
        button[i]->setStyleSheet("QPushButton{background:#060C24;color:#FFFFFF;}”
                                 "QPushButton{border-radius:5;border:0;}"
                                 "QPushButton:pressed{background-color:#006EFF;}"
                                 "QPushButton:checked{background-color:#006EFF;}");
        break;
    case 1:
        button[i]->setStyleSheet("QPushButton{background:#060C24;color:#FFFFFF;}"
                                 "QPushButton{border-radius:5;border:0}"
                                 "QPushButton:pressed{background-color:#243058;}"
                                 "QPushButton:checked{background-color:#243058;}");
        break;
    }
        button[i]->setCheckable(true);
        button[i]->setAutoExclusive(true);
}

(2)逻辑实现

首先一定要加入上图中最后两行代码,使得按键可以选中并仅有一个可以选中。

设置按键组,将启动/禁用按键都加进去按键组

QButtonGroup *BG;
BG->addButton(button[0]);
BG->addButton(button[1]);

先设置启动按键一开始就选中

button[0]->setChecked(true);

接着连接两个按键的槽函数,实现点击切换状态效果

启动按键点击槽函数:

    connect(button[0],&QPushButton::pressed,[=](){
        button[0]->setCheckable(true);
        button[1]->setCheckable(true);
        if(button[0]->isChecked()){
            BG->setExclusive(false);
            button[0]->setCheckable(false);
            BG->setExclusive(true);
            button[1]->setChecked(true);
        }
    });//设置启动按键,使得启动和禁用按键为一组,只有两种状态,点击任何一个双方状态都会改变

禁用按键点击槽函数:

    connect(button[1],&QPushButton::pressed,[=](){
        button[0]->setCheckable(true);
        button[1]->setCheckable(true);
        if(button[1]->isChecked()){
            BG->setExclusive(false);
            button[1]->setCheckable(false);
            BG->setExclusive(true);
            button[0]->setChecked(true);
        }
    }); //设置禁用按键,使得启动和禁用按键为一组,只有两种状态,点击任何一个双方状态都会改变

至此效果实现。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一种跨平台的图形用户界面开发框架,可以用于开发不同操作系统上的应用程序。Qt提供了丰富的控件和功能,使开发者能够轻松地实现各种功能。 在Qt中,要实现左滑打开右滑关闭按钮的功能,可以借助QSlider控件和QPropertyAnimation动画类来实现。 首先,需要创建一个QSlider控件,并将其放置在需要实现此功能的窗口中。可以使用QVBoxLayout或QHBoxLayout来设置布局,并将QSlider添加到布局中。 接下来,需要创建一个QPropertyAnimation动画类,并指定需要进行动画的目标对象和属性。在此情况下,目标对象是QSlider控件,属性是其value属性。 然后,通过调用QPropertyAnimation的setStartValue()和setEndValue()方法,设置动画的起始值和结束值。起始值可以设置为QSlider的最小值,结束值可以设置为QSlider的最大值。 接下来,可以设置动画的持续时间,可以通过调用QPropertyAnimation的setDuration()方法来设置,单位为毫秒。 最后,通过调用QPropertyAnimation的start()方法来启动动画。可以在左滑或右滑手势识别的事件处理函数中调用此方法。 当用户向左滑动时,可以递增QSlider的value属性,使其显示更大的值,从而实现左滑打开的效果。当用户向右滑动时,可以递减QSlider的value属性,使其显示更小的值,从而实现右滑关闭效果。 需要注意的是,为了更好地触发手势识别事件,可以在QSlider控件上使用QWidget的setMouseTracking()方法,并将其设置为True,以便实时追踪鼠标移动。 以上就是利用Qt实现左滑打开右滑关闭按钮的基本思路和方法。根据具体的应用场景和需求,可以对上述方法进行适当的调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值