我一直在用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())
{
...
}
}
}
有没有办法像这样嵌套按钮?或者另一种方法来实现相同的想法?谢谢!
答案 0 :(得分:3)
太多嵌套的“if”语句不是一个好主意。有关代码的可读性,以及将来如果要更新软件。这在开始时总是很简单,但它往往很复杂......你可以使用state pattern,它允许你根据所采取的行动改变对象的行为。每次调用按钮都会改变对象的内部状态,完成此更改的方式取决于当前的内部状态。例如:
编辑:如Kuba所述,QStateMachine是一个帮助您完成此过程的课程。
另一个想法是存储按下的按钮的顺序。将每个新闻事件连接到一个插槽(QSignalMapper可以提供帮助),并将订单存储在列表中。然后处理列表并相应地执行操作。