Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将if循环或switch case与qt小部件一起使用的有效方法_C++_Qt - Fatal编程技术网

C++ 将if循环或switch case与qt小部件一起使用的有效方法

C++ 将if循环或switch case与qt小部件一起使用的有效方法,c++,qt,C++,Qt,我有一个表单,在文本编辑中,用户给出最大值为3的输入整数,根据这个表单,我必须显示按钮的数量。在designer中,我创建了3个带有布局的按钮,并根据输入使用了开关盒和隐藏按钮。是否有其他有效的方法根据用户输入创建小部件。在我的表格contsrutor中: switch(input) { case1: button2->setvisible(false); button3->setvisible(false); // so only one btn is visible case 2

我有一个表单,在文本编辑中,用户给出最大值为3的输入整数,根据这个表单,我必须显示按钮的数量。在designer中,我创建了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.
}
上面的代码看起来很简单,但我有很少的帧、行编辑和无线基站,所以代码很长,我认为它效率不高。请给我推荐其他的选择。我已经使用了禁用整个帧,这也可以,但寻找一些其他选项,或者可能是更好地使用if条件。
动态创建按钮是否更好?谢谢

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

 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);
QList buttons={ui->btn1,ui->btn2…}//所有按钮都在这里。
对于(int i=0;isetVisible(真);
for(int i=input;isetVisible(假);

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

不要忘记您的
中断;
s,否则执行将在下一个
案例中进行。
。不要担心
切换
性能…如果这不是关于性能,而是关于“好看的代码”,那怎么办使用
setvisible(这里的条件)
?@Gizmo:我不明白。@vinayrajputh
button2->setvisible(输入!=1)
例如,不使用开关盒。再看看@Tomaz的答案。你是否试图显示从
0
input
的按钮,并隐藏其余按钮?从他的简单示例来看,看起来是这样的。我也使用了上述方法。问题是我有很多小部件,大约25个左右(由于我使用了布局、框架和间隔符,我想知道我是否应该使用动态编码,而不是使用设计器。@Vinayraputh但在你的问题中,唯一改变的小部件是这三个按钮,对吗?@mrg95,是的,我已经简化了解释。但在我的代码中,仍然有很多小部件。