原创版权标志如何做到可以弹出的小滑动条?本文简洁明了告诉你!

作者:凌风  发表时间:2016-1-21 0:19:43  阅读:1229
[摘要]今天我学心血来潮想做一个小功能,利用滑块的位置来实现调整窗口透明度,于是,开始行动,历尽艰辛啊。
文章来源:C++技术网 原创文章版权所有,未经授权,禁止转载。

我们是不是一直想弄一个这样的窗口呢?

如何直接New一个QSlider,我们就会看到生成的QSlider是一个单独的窗口,不能实现这个点击音量弹出,点击别的地方关闭的效果。这个效果如何做?

其实这个效果利用的是QToolButton实现的。

首先来看代码:


    setPopupMode(QToolButton::InstantPopup);/*这个很重要,标记了窗口的弹出模式,我们就需要这个*/

    QWidget *popup = new QWidget(this);//生成我们学校的小部件(显示音量的窗口)

    slider = new QSlider(Qt::Horizontal, popup);//生成一个我们需要的那个滑动条
    slider->setRange(0, 100);//设置值域
    connect(slider, SIGNAL(valueChanged(int)), this, SIGNAL(volumeChanged(int)));//链接

    label = new QLabel(popup);//生成一个label,用于标记当前音量
    label->setAlignment(Qt::AlignCenter);//布局,设置中心对称
    label->setNum(100);//设置最大值100
    label->setMinimumWidth(label->sizeHint().width());//设置尺寸
    connect(slider, SIGNAL(valueChanged(int)), label, SLOT(setNum(int)));//链接

    QBoxLayout *popupLayout = new QHBoxLayout(popup);//建立布局
    popupLayout->setMargin(2);//建立篮子(装控件的),外国人思维太奇妙了。。
    popupLayout->addWidget(slider);//slider装进篮子
    popupLayout->addWidget(label);//Label装进篮子

    QWidgetAction *action = new QWidgetAction(this);//新建部件的动作(就是弹出的内容)
    action->setDefaultWidget(popup);//弹出那个窗口

    menu = new QMenu(this);//新建菜单(用于添加上面的那个动作↑)
    menu->addAction(action);//在这个菜单中增加一个内容(就是显示我们的那个滑动条)
    setMenu(menu);//在哪个按钮上显示出菜单


代码写的很清晰,首先我们拖一个QToolButton放在UI设计版中。然后我们在构造函数中加入上面的代码,这样,程序执行的时候,菜单被构造完毕。so。。。效果出来了。

本人实现的效果如下:

文章来源:C++技术网 原创文章版权所有,未经授权,禁止转载。



返回顶部

关于我们 QQ群 广告服务 增值服务 捐款资助 版权声明 RSS订阅 站点地图 百度网站地图 意见反馈
鄂ICP备14001349号-2, Copyright © 2014-2017, CJJJS.COM/CJJJS.CN, All Rights Reserved

在线提问
问题标题:
问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)

C++技术网群聊