C++Qt不用UI的形式实现在QLineEdit中输入数字,通过Add的按钮,添加到文本框中
时间: 2024-03-06 13:48:52 浏览: 78
QT按钮点击切换QLineEdit焦点
如果你不想使用UI形式实现这个功能,你可以直接在代码中创建QLineEdit和QPushButton对象,并将它们添加到QWidget中,然后将它们的信号槽连接起来。以下是一个简单的示例代码:
```cpp
#include <QtWidgets>
class Widget : public QWidget
{
public:
Widget(QWidget *parent = nullptr)
: QWidget(parent)
{
// 创建QLineEdit和QPushButton对象
QLineEdit *lineEdit = new QLineEdit(this);
QPushButton *addButton = new QPushButton("Add", this);
// 设置布局
QHBoxLayout *layout = new QHBoxLayout();
layout->addWidget(lineEdit);
layout->addWidget(addButton);
setLayout(layout);
// 连接信号槽
connect(lineEdit, SIGNAL(returnPressed()), this, SLOT(onAddClicked()));
connect(addButton, SIGNAL(clicked()), this, SLOT(onAddClicked()));
}
private slots:
void onAddClicked()
{
// 获取输入的数字并添加到文本框中
QString text = static_cast<QLineEdit*>(sender()->parent())->text();
bool ok;
int num = text.toInt(&ok);
if (ok) {
qDebug() << "Add number: " << num;
// 在这里添加到文本框中
}
// 清空输入框
static_cast<QLineEdit*>(sender()->parent())->clear();
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
```
在上面的代码中,我们创建了一个Widget类,继承自QWidget。在构造函数中,我们创建了一个QLineEdit和一个QPushButton对象,并将它们添加到水平布局中,然后将该布局设置为QWidget的布局。
接着,我们将QLineEdit的returnPressed信号和QPushButton的clicked信号连接到同一个槽函数onAddClicked中。在槽函数中,我们获取输入的数字并添加到文本框中。最后,我们清空输入框。
需要注意的是,我们在获取输入框的文本时,使用了sender()函数获取信号发送者,并通过parent()函数获取其父对象,即QWidget对象。由于我们知道该QWidget对象中只包含一个QLineEdit和一个QPushButton对象,因此可以将其强制转换为QLineEdit对象,并获取其text()属性。
阅读全文