在 Qt 开发中,经常会设置某些控件透明的透明度或者将其隐藏,这些对于新手开发人员来说还是有些难度的,那今天我们就给大家讲解一下qtjson隐藏控件的方法。
其实设置原理很简单,就是设置控件的透明度,直到透明度为0后再将控件设置为隐藏即可。动画的过程可以用两种方式来实现,第一是通过定时器,不断的设置控件的透明度,第二是通过QPropertyAnimation来实现,当然,后者会更简单。这里需要用到QGraphicsOpacityEffect类。
当然,还可以将 QLabel 换成其他控件,比如 QPushButton等等。
来看源码:
Widget::Widget(QWidget * parent): QWidget(parent) , ui(new Ui::Widget) { ui - > setupUi(this); m_pGraphicsOpacityEffect = new QGraphicsOpacityEffect(ui - > label); m_pGraphicsOpacityEffect - > setOpacity(1); ui - > label - > setGraphicsEffect(m_pGraphicsOpacityEffect); m_pNameAnimation = new QPropertyAnimation(m_pGraphicsOpacityEffect, "opacity", this); m_pNameAnimation - > setEasingCurve(QEasingCurve::Linear); m_pNameAnimation - > setDuration(2500); } Widget::~Widget() { delete ui; delete m_pGraphicsOpacityEffect; delete m_pNameAnimation; } void Widget::on_pushButton_clicked() { m_pNameAnimation - > setStartValue(1); m_pNameAnimation - > setEndValue(0); m_pNameAnimation - > start(QAbstractAnimation::KeepWhenStopped); }
代码很简单,就是QGraphicsOpacityEffect + QPropertyAnimation来实现想要的效果。
qt怎么设置控件大小?
使用函数:
1.设置布局管理器内部尺寸比例:
QVBoxLayout::setStretchFactor(Qlayout *1,int);
Qlayout *1:添加的控件
int:所占布局管理器的比例
//例: QVBoxLayout::setStretchFactor(btn1,2); QVBoxLayout::setStretchFactor(btn2,1);
结果:btn1:btn2 = 2:1;
注:一般不设置尺寸比例的话,都是等比分布,设置尺寸比例的时候最好添加的控件都重新设置
2.添加弹簧使控件向左,向右,居中对齐:
QHBoxLayout::addStretch(int Stretch = 0);
用法:以水平管理器为例,
布局管理器在添加完控件后使用函数addStretch(),则控件排布向左靠齐
布局管理器在添加控件前使用函数addStretch(),则控件排布向右靠齐
布局管理器在添加每个控件前后使用函数addStretch(),则控件居中排布
//添加最后向左靠齐 HBoxLayout1 = new QHBoxLayout(); HBoxLayout1->addWidget(btn1); HBoxLayout1->addWidget(btn2); HBoxLayout1->addWidget(btn3); HBoxLayout1->addWidget(btn4); HBoxLayout1->addStretch(); //这个就像在这一个水平布局管理器添加了一个个弹簧将各个控件向前挤,靠左对齐,根据弹簧位置,弹簧压缩,设置对齐方式。
3.设置控件最大最小尺寸,控制在布局管理器内的缩放尺寸:
(1).QLabel::setMinimumSize(int,int);//最小尺寸
QLabel::setMaximumSize(int,int);//最大尺寸
lab2 = new QLabel(this); lab2->setMinimumSize(502,278); lab2->setMaximumSize(502,278);
控件可以设置最大尺寸和最小尺寸,如果最大尺寸和最小尺寸一样,控件就固定尺寸,在布局管理器里也一样,不会自动缩放。
(2).setFixedSize ( int w, int h ) ;//相当于最大最小尺寸相等
lab1->setFixedSize(800,450);
4.设置两个控件之间间隔:
QHBoxLayout::addSpacing(int);
VLayout1->addSpacing(50);
注:这个有点像占位符,类似隐形控件,根据你设定的大小占据空间。
按照以上的方法就将qt控件大小设置好了,其实每一个设置的方法看似复杂实则简单,只要大家多练习几遍就可以了。最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。
推荐阅读: