使用if循环或切换案例与qt小部件的有效方式

时间:2017-04-12 15:53:59

标签: c++ qt

我有一个表单,在文本编辑中,用户给出最大值为3的输入整数,根据这个我必须显示按钮的数量。在设计师我已经创建了3个按钮与布局,并根据输入我使用开关盒和隐藏按钮。是否有任何其他有效的方法来根据用户输入创建窗口小部件。在我的形式contsrutor:

switch(input)
{
case1:
button2->setvisible(false);
button3->setvisible(false); // so only one btn is visible
case 2:
button3->setvisible(false); // so only btn 1 nd 2 are visible
case 3:
// do nothing.
}

以上似乎很简单,但我有很少的帧,行编辑和无线电btns,所以代码很长,我认为它效率不高。请建议我一些其他选择。我已经使用了禁用整个框架,这也可以工作,但寻找其他一些选项,或者可以更好地使用if条件。 动态创建它们会更好吗?谢谢

1 个答案:

答案 0 :(得分:1)

如果您知道按钮的数量,并且输入是整数,那么它应该很容易:

 QList<QPushButton*> buttons = { ui->btn1, ui->btn2... } // all your buttons here.
 for(int i = 0; i < input; i++) {
    buttons[i]->setVisible(true);
 for(int i = input; i < buttons.size(); i++) 
    buttons[i]->setVisible(false);

首先确保所有按钮直到“输入”都可见,然后将所有按钮从“输入”隐藏到列表末尾。