加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c-Qt状态机在布局中的转换

发布时间:2020-12-16 03:10:40 所属栏目:百科 来源:网络整理
导读:那么,我正在开发一个Qt应用程序,我想使用Qt状态框架做一些动画. 第一: 如何通过使用状态转换来将包含在水平布局中的一组按钮动画化为另一个垂直布局? 第二: 处于状态时如何显示窗口小部件?例如菜单:当用户单击菜单中的按钮时,将显示窗口小部件(以前已使
那么,我正在开发一个Qt应用程序,我想使用Qt状态框架做一些动画.

第一:
如何通过使用状态转换来将包含在水平布局中的一组按钮动画化为另一个垂直布局?

第二:
处于状态时如何显示窗口小部件?例如菜单:当用户单击菜单中的按钮时,将显示窗口小部件(以前已使用窗口小部件> hide()隐藏)… …

这是一个代码示例:

boxInsert = new BoxInsert(this);
boxInsert->hide ();


btn1 = new QPushButton("Introducir",this);
btn2 = new QPushButton("Informe",this);
btn3 = new QPushButton("Salir",this);

QStateMachine *machine = new QStateMachine(this);

QState *st1 = new QState(machine);
st1->setObjectName ("menuMode");
st1->assignProperty (btn1,"pos",QPointF(center - btn1->width () / 2,20));
st1->assignProperty (btn2,40));
st1->assignProperty (btn3,60));
st1->assignProperty (boxInsert,"visible",QVariant(false));

QState *st2 = new QState(machine);
st2->setObjectName ("barMode");
st2->assignProperty (btn1,QPointF(40,0));
st2->assignProperty (btn2,0));
st2->assignProperty (btn3,0));
st1->assignProperty (boxInsert,QVariant(true));

machine->setInitialState (st1);

QAbstractTransition *t1 = st1->addTransition (btn1,SIGNAL(clicked()),st2);
//QSequentialAnimationGroup *sq1 = new QSequentialAnimationGroup;
//sq1->addPause (250);
t1->addAnimation (new QPropertyAnimation(btn1,"pos"));
t1->addAnimation (new QPropertyAnimation(btn2,"pos"));
t1->addAnimation (new QPropertyAnimation(btn3,"pos"));
t1->addAnimation (new QPropertyAnimation(boxInsert,"visible"));

machine->start ();

解决方法

这样的东西就像当你启动机器时会改变一个按钮的颜色,这个按钮的颜色可能表明这是被点击的,然后执行与你的信号链接的东西,所以链接的插槽将被执行.
s0->addTransition(s1);
s1->assignProperty(ui->pushButton,"styleSheet","background-color:rgb(255,0);");
s1->addTransition(s2);
s2->addTransition(ui->pushButton,s0);
QStateMachine m;
m.addState(s0);
m.addState(s1);
m.addState(s2);
m.setInitialState(s0);

要使可见窗口小部件添加如下状态转换:

s1->assignProperty(MyWid,true);

并在状态s1的s0中添加转换.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读