返回列表
mayaAPI

UI滑杆与数值联动

class sliderTool_1(MayaQWidgetBaseMixin, QDialog):
def __init__(self, parent=None):
super(sliderTool_1, self).__init__(parent)super-继承。从库里将类拿出来交给了子类。

super-继承。从库里将类拿出来交给了子类。

self.setMinimumSize(400, 50)  # 设置虚拟盒子宽高

设置最小的尺寸。如果设置的太小,就会用实际的长宽。

boxA = QVBoxLayout(self)

为主盒子,只有主盒子要写self。布局的时候如果要继承类,应该把类写在()里

self.slider = QSlider(Qt.Horizontal)
self.slider.setRange(0, 100)
self.slider.setValue(0)

控件写在.slider前面

range函数是设置取值范围,此处为0-100允许滑动的最大值与最小值

创建滑杆,设置滑动范围和初始值

self.line_edit = QLineEdit()
self.line_edit.setText("20")

设置最小的宽数值,为60,避免太窄

boxB.addWidget(self.label, 10)
boxB.addWidget(self.slider, 75)
boxB.addWidget(self.line_edit, 15)
boxA.addLayout(boxB)

 将这三个放入 boxB里,先放类的便笺,再试是滑杆,最后是输入框

addWidget的数值越大,占比越大

self.slider.valueChanged.connect(self.slider_changed)
self.line_edit.textChanged.connect(self.text_changed)

桥左边的部分是类的滑杆,connect函数连接,这个类的滑杆值改变之后,连接这个类的槽

def slider_changed(self, value):
value = str(value)
self.line_edit.setText(value)

自定义了一个函数,叫slider_changed

先强制类型转换,转换成字符串,再将文字设置给框

def text_changed(self, text):
value = int(text)
# 限制输入范围,避免超出滑杆范围
if 0 <= value <= 100:
self.slider.setValue(value)

先做数据类型转换,转成整形,做if判断:如果在0-100间那么就改变滑杆的值

ps:滑杆只能用整数

两个重点:

排版对齐的5种方式:
self.label.setAlignment(Qt.AlignCenter)
Qt.AlignLeft # 左对齐
Qt.AlignRight # 右对齐
Qt.AlignHCenter # 仅水平居中
Qt.AlignVCenter # 仅垂直居中
Qt.AlignCenter # 水平 + 垂直 全部居中
标准流程范式:
1.画虚拟盒子布局图
2.创建创建类---主弹窗DQDialog
3.创建主虚拟盒子A
4.创建次级虚拟盒子:B_1,B_2...,次级的次级虚拟盒子:C_1,C_2....
5.创建各种控件
6.俄罗套娃:控件放到次级虚拟盒子,次级盒子放到主虚拟盒子
7.创建桥
8.创建槽
9.实例化类,调用主弹窗DQDialog