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