Qt自定义带游标的slider,在滑块正上方显示当前值(非常有意思,继承QSlider之后增加一个QLabel,然后不断移动它)
首先自定义QSlider的子类MyCustomSlider,如下所示。
mycustomslider.h
- #ifndef MYCUSTOMSLIDER_H
- #define MYCUSTOMSLIDER_H
- #include <QSlider>
- #include <QLabel>
- #include <QMouseEvent>
- class MyCustomSlider : public QSlider
- {
- public:
- MyCustomSlider(QWidget *parent=0);
- ~MyCustomSlider();
- protected:
- virtual void mousePressEvent(QMouseEvent *event);
- virtual void mouseReleaseEvent(QMouseEvent *event);
- virtual void mouseMoveEvent(QMouseEvent *event);
- private:
- QLabel* m_displayLabel;
- };
- #endif // MYCUSTOMSLIDER_H
mycustomslider.cpp
- #include "mycustomslider.h"
- #include <QPalette>
- MyCustomSlider::MyCustomSlider(QWidget *parent):QSlider(parent)
- {
- m_displayLabel=new QLabel(this);
- m_displayLabel->setFixedSize(QSize(20,20));
- //设置游标背景为白色
- m_displayLabel->setAutoFillBackground(true);
- QPalette palette;
- palette.setColor(QPalette::Background, Qt::white);
- m_displayLabel->setPalette(palette);
- m_displayLabel->setAlignment(Qt::AlignCenter);
- m_displayLabel->setVisible(false);
- m_displayLabel->move(0,3);
- }
- MyCustomSlider::~MyCustomSlider()
- {
- }
- void MyCustomSlider::mousePressEvent(QMouseEvent *event)
- {
- if(!m_displayLabel->isVisible())
- {
- m_displayLabel->setVisible(true);
- m_displayLabel->setText(QString::number(this->value()));
- }
- QSlider::mousePressEvent(event);
- }
- void MyCustomSlider::mouseReleaseEvent(QMouseEvent *event)
- {
- if(m_displayLabel->isVisible())
- {
- m_displayLabel->setVisible(false);
- }
- QSlider::mouseReleaseEvent(event);
- }
- void MyCustomSlider::mouseMoveEvent(QMouseEvent *event)
- {
- m_displayLabel->setText(QString::number(this->value()));
- m_displayLabel->move((this->width()-m_displayLabel->width())*this->value()/(this->maximum()-this->minimum()),3);
- QSlider::mouseMoveEvent(event);
- }
然后将界面QSlider控件提升为MyCustomSlider,提升方法如下所示。
最后的效果如下图所示,当鼠标点击滑块或者拖动滑块时,滑块正上方的游标实时显示当前值,松开鼠标时,游标隐藏。
源码链接:见http://blog.csdn.net/caoshangpa/article/details/51973902
源码链接:http://download.csdn.net/detail/caoshangpa/9581687
Qt自定义带游标的slider,在滑块正上方显示当前值(非常有意思,继承QSlider之后增加一个QLabel,然后不断移动它)的更多相关文章
- Qt自定义带游标的slider,在滑块正上方显示当前值(类似于进度条,用一个额外的QLabel冒充QSilder的一部分,然后move就行了)
首先自定义QSlider的子类MyCustomSlider,如下所示. mycustomslider.h #ifndef MYCUSTOMSLIDER_H #define MYCUSTOMSLIDER ...
- SQL Server带游标的SQL
DECLARE test_cursor CURSOR FOR SELECT ID FROM dbo.T_BD_Restaurant WHERE id <> '0AAB2E55-79F8-4 ...
- 自定义带图片和文字的ImageTextButton
今天我们来讲一下有关自定义控件的问题,今天讲的这篇是从布局自定义开始的,难度不大,一看就明白,估计有的同学或者开发者看了说,这种方式多此一举,但是小编我不这么认为,多一种解决方式,就多一种举一反三的学 ...
- Qt自定义标签按钮
当你接触到Qt时,你会为它极为方便的跨平台方面感到吃惊,从而想尝试着使用Qt.渐渐地你会发现Qt自带的一些控件不能满足自己的需要,此时就需要我们自己定义一个属于自己的控件.总所周知,标签的风格设置类比 ...
- Qt 怎样生成带图标的exe
一.问题描述 当我们在 Windows 下用 VS 生成 exe 程序时,如果窗口程序指定了图标,那么生成的 exe 程序便是指定的图标模样. 但是,当使用 Qt Creator 编译程序却不同.即使 ...
- Qt自定义事件的实现(转)
原文:http://blog.csdn.net/michealtx/article/details/6866094 初学Qt,用了Qt自带的事件,然后想怎么才能定义自己的事件呢?又如何使用自定义事件呢 ...
- Qt自定义事件的实现(军队真正干活,但要增加监军,大平台通知事件,事件内容自定义)
初学Qt,用了Qt自带的事件,然后想怎么才能定义自己的事件呢?又如何使用自定义事件呢?看了篇文章,说先要子类化QEvent,然后定义自己的QEvent::Type,然后重写QWidget::event ...
- Qt 自定义事件的实现
初学Qt,用了Qt自带的事件,然后想怎么才能定义自己的事件呢?又如何使用自定义事件呢?看了篇文章,说先要子类化QEvent,然后定义自己的QEvent::Type,然后重写QWidget::event ...
- Qt自定义标题栏
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt自定义标题栏 本文地址:http://techieliang.com/2017/1 ...
随机推荐
- KEIL简单实例
好久都没有用KEIL了,突然想动手,一时还真不知道从哪开始写,所以先弄个小实例,以便参考:#include <reg52.h> //加载包括一个52标准内核的头文件,里面主要是一些寄存器 ...
- Qt的Script、Quick、QML的关系与总结
背景 最近在学QML,感觉也不难,就是一直以来接触 Qt 的脚本类的东西的顺序是Script.Quick1.Declarative.Quick2.QML.那么每一个都是干什么的呢,这些东西搞的我有点混 ...
- BaseAdapter自定义适配器——思路详解
BaseAdapter自定义适配器——思路详解 引言: Adapter用来把数据绑定到扩展了AdapterView类的视图组.系统自带了几个原生的Adapter. 由于原生的Adapter视图功能太少 ...
- AndroidStudio常见提示
Required:请求的是String字符串 . Found: et.getText()返回的是text.Editable
- MyBatis3整合Spring3、SpringMVC3
开发环境: System:Windows WebBrowser:IE6+.Firefox3+ JavaEE Server:tomcat5.0.2.8.tomcat6 IDE:eclipse.MyEcl ...
- Android-67-Tomcat启动出错:Server Tomcat v7.0 Server at localhost failed to start.
错误:Server Tomcat v7.0 Server at localhost failed to start.如图: 唉! ! !!图片上传不上去,悲哀啊!..仅仅能先写着错误提示语吧~~ ...
- Ubuntu下访问SSH
ssh程序分为有客户端程序openssh-client和服务端程序openssh-server.如果需要ssh登陆到别的电脑,需要安装openssh-client,该程序ubuntu是默认安装的.而如 ...
- git的0基础使用
1.申请一个git帐号 2.项目开发者将你增加这个项目 3.在终端随意一个目录克隆 该项目地址 git clone 该项目地址 4.进nginx配置 5.更新的时候进入项目目录 git pull
- Oracle decode函数 除数为零
decode (expression, search_1, result_1)如果 expression结果=search_1结果,则返回result_1,类似 if elsedecode (expr ...
- Solr-4.10.2与Tomcat整合
1.将下载的solr解压至D:\solr,拷贝d:\solr\solr-4.10.2\example\webapps\solr.war到Tomcat的webapps\目录中.直接解压 solr.war ...