c-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中添加转换.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...