🙄
要求是:设计一个按钮,点一下,增加一栏输入框
![](https://i-blog.csdnimg.cn/blog_migrate/6f3bf5e357f7df0036a6e4bd90c6bb9e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3d98d4a1c482a29e6b896e61c0dcfd88.png)
👨💻
先用设计器写上可以写死的控件
![](https://i-blog.csdnimg.cn/blog_migrate/417bd41ac3d6b1a82ca4bcfccc2849c0.png)
然后思路就是:
输入框的控件是
QLineEdit
,那就创建QLineEdit
的数组,然后链接 + 按钮,再设置一下输入框和 + 的位置就可以了
目前在设计器中没法设计某个控件的数组,只能在代码中自己写
上代码
// .h头文件
private:
QLineEdit *x[200],*y[200];
int x_spacing = 80;
int y_spacing = 130;
int i = 0;
int lineedit_num = 5;
QLabel *num[50];
int label_num = 1;
private slots:
void addlineedit();
// .cpp文件
navDebuggingTools::navDebuggingTools(QWidget *parent)
: QMainWindow(parent)
{
int tmp = i + 5;
for (i; i < tmp; ++i) {
x[i] = new QLineEdit(ui.scrollareawidget);
x[i]->setGeometry(x_spacing, y_spacing, 51, 30);
x[i]->show();
y[i] = new QLineEdit(ui.scrollareawidget);
y[i]->setGeometry(x_spacing+50, y_spacing, 51, 30);
y[i]->show();
x_spacing += 110;
if (x_spacing > 520) x_spacing = 80;
}
num[label_num] = new QLabel(ui.scrollareawidget);
num[label_num]->setGeometry(20, 130, 30, 30);
num[label_num]->setText(QString::number(5));
num[label_num]->show();
label_num ++;
connect(ui.addlineedit_btn, &QPushButton::clicked, this, &navDebuggingTools::addlineedit);
}
void navDebuggingTools::addlineedit() {
int t = i + 5;
y_spacing += 50;
for (i; i < t; ++i) {
x[i] = new QLineEdit(ui.scrollareawidget);
x[i]->setGeometry(x_spacing, y_spacing, 51, 30);
x[i]->show();
y[i] = new QLineEdit(ui.scrollareawidget);
y[i]->setGeometry(x_spacing + 50, y_spacing, 51, 30);
y[i]->show();
x_spacing += 110;
if (x_spacing > 520) x_spacing = 80;
}
lineedit_num += 5;
num[label_num] = new QLabel(ui.scrollareawidget);
num[label_num]->setGeometry(20, y_spacing, 30, 30);
num[label_num]->setText(QString::number(lineedit_num));
num[label_num]->show();
label_num ++;
ui.addlineedit_btn->move(640, y_spacing);
if (lineedit_num == 100) ui.addlineedit_btn->hide();
}
😎
有一点要注意的是:
一开始是先写了第一栏输入框,并在左边写了个标签
num[label_num]->setText(QString::number(5));
,而忘了写num[label_num]->show()
,所以在槽函数中,也忘了给label
写show()
,但同样没写show()
的标签,第一个显示出来了,其他的却没有显示。
最后把show()
补上,才没问题。只是为什么会这样,我没找到原因