请教个Qt相关问题:对于QSlider如何自定义设置滑块滑动区域?

请教个Qt相关问题:对于QSlider如何自定义设置滑块滑动区域?,第1张

QSlider *qs=new QSlider(this)

qs->setGeometry(20,50,20,100)

qs->setRange(0,100) //设定最大值最小值

qs->setMinimum(0)qs->setMaximum(100) //分开设定最大值,最小值

方法一:直接QSlider::handle{border-image:url(...)}

括号内是你添加一个圆形贴图,border-image可以根据部件大小伸缩贴图,background-image是不伸缩,默认从中间贴图,图片小于部件的,用background-repeat:repeat-x等控制图片重复方向,还可以用background-position: bottom left和background-origin:padding控制贴图位置和贴图区域;

方法二:采用样式表自己画颜色QSlider::handle{background-color...border-radius:10px控制圆角,这种方法能近似贴一个圆,但不是很美观,需要自己手调很多细节;

方法三:自建类重绘,这个不需要解释

上一节我们详细分析了connect()函数。使用connect()可以让我们连接系统提供的信号和槽。但是,Qt 的信号槽机制并不仅仅是使用系统提供的那部分,还会允许我们自己设计自己的信号和槽。这也是 Qt 框架的设计思路之一,用于我们设计解耦的程序。本节将讲解如何在自己的程序中自定义信号槽。

信号槽不是 GUI 模块提供的,而是 Qt 核心特性之一。因此,我们可以在普通的控制台程序使用信号槽。

经典的观察者模式在讲解举例的时候通常会举报纸和订阅者的例子。有一个报纸类Newspaper,有一个订阅者类Subscriber。Subscriber可以订阅Newspaper。这样,当Newspaper有了新的内容的时候,Subscriber可以立即得到通知。在这个例子中,观察者是Subscriber,被观察者是Newspaper。在经典的实现代码中,观察者会将自身注册到被观察者的一个容器中(比如subscriber.registerTo(newspaper))。被观察者发生了任何变化的时候,会主动遍历这个容器,依次通知各个观察者(newspaper.notifyAllSubscribers())。

下面我们看看使用 Qt 的信号槽,如何实现上述观察者模式。注意,这里我们仅仅是使用这个案例,我们的代码并不是去实现一个经典的观察者模式。也就是说,我们使用 Qt 的信号槽机制来获得同样的效果。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11327618.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存