[英]Qt Signals/Slots Changeable?
我一直在用Qt编写一些基本应用程序,并且发现它的信号和插槽机制非常有帮助。 但是,我希望做些事情,但是我似乎无法弄清楚如何使其工作。
基本上,我希望有一个包含一些文本,图片,任何内容和一个按钮块的屏幕。 当我按下按钮时,我希望屏幕上的其他内容也相应地更改。 然后我要重复该过程。 我正在考虑的应用程序的工作原理类似于基于文本的基本游戏。
我希望写这样的东西:
void someFunction()
{
//Display some stuff
if(button1pressed())
{
//display some different stuff
if(button1pressed())
{
...
}
if(button2pressed())
{
...
}
if(button...pressed())
{
...
}
}
if(button2pressed())
{
//display some different stuff
if(button1pressed())
{
...
}
if(button2pressed())
{
...
}
if(button...pressed())
{
...
}
}
if(button...pressed())
{
//display some different stuff
if(button1pressed())
{
...
}
if(button2pressed())
{
...
}
if(button...pressed())
{
...
}
}
}
有没有办法像这样嵌套按钮按下? 还是另一种实现相同想法的方法? 谢谢!
嵌套过多的“ if”语句不是一个好主意。 为了代码的可读性,以及将来要更新软件时使用的代码。 一开始这总是很简单,但随后往往会变得很复杂...您可以使用状态模式 ,该模式允许您根据所采取的操作来更改对象的行为。 每次调用按钮都会更改对象的内部状态,而完成此更改的方式可能取决于当前的内部状态。 例如:
编辑:正如Kuba所说, QStateMachine是一个在此过程中帮助您的类。
另一个想法是存储按下按钮的顺序。 将每个新闻事件连接到插槽( QSignalMapper可以帮助您),并将订单存储在列表中。 然后处理列表并采取相应的措施。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.