C++ 将if循环或switch case与qt小部件一起使用的有效方法
我有一个表单,在文本编辑中,用户给出最大值为3的输入整数,根据这个表单,我必须显示按钮的数量。在designer中,我创建了3个带有布局的按钮,并根据输入使用了开关盒和隐藏按钮。是否有其他有效的方法根据用户输入创建小部件。在我的表格contsrutor中: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
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:我不明白。@vinayrajputhbutton2->setvisible(输入!=1)
例如,不使用开关盒。再看看@Tomaz的答案。你是否试图显示从0
到input
的按钮,并隐藏其余按钮?从他的简单示例来看,看起来是这样的。我也使用了上述方法。问题是我有很多小部件,大约25个左右(由于我使用了布局、框架和间隔符,我想知道我是否应该使用动态编码,而不是使用设计器。@Vinayraputh但在你的问题中,唯一改变的小部件是这三个按钮,对吗?@mrg95,是的,我已经简化了解释。但在我的代码中,仍然有很多小部件。