3. 文本框输入
任务目标
创建一个Qt窗口程序,包含一个QLineEdit输入框和一个QLabel标签。当用户在输入框中键入文本并按下回车键时,程序将输入框中的内容实时显示到标签上。
环境依赖
需要Qt 5或Qt 6开发环境,以及对应的C++编译器。项目文件(.pro)中需包含widgets模块。
完整代码
以下代码包含完整的窗口实现与main入口,可直接编译运行:
#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QLineEdit>
#include <QLabel>
class InputWindow : public QWidget {
Q_OBJECT
public:
InputWindow(QWidget *parent = nullptr) : QWidget(parent) {
// 创建控件
QLineEdit *lineEdit = new QLineEdit(this);
lineEdit->setPlaceholderText("请输入文本,然后按回车");
QLabel *label = new QLabel("这里将显示输入内容", this);
label->setAlignment(Qt::AlignCenter);
// 连接信号:回车触发时更新标签文本
connect(lineEdit, &QLineEdit::returnPressed, this, [=]() {
label->setText(lineEdit->text());
});
// 布局
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(lineEdit);
layout->addWidget(label);
setLayout(layout);
setWindowTitle("文本框输入示例");
resize(300, 120);
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
InputWindow window;
window.show();
return app.exec();
}
#include "main.moc"
运行方式
- 将上述代码保存为
main.cpp。 - 在相同目录下创建
InputDemo.pro项目文件,内容如下:
QT += widgets
SOURCES += main.cpp
TARGET = InputDemo
- 在终端执行以下命令编译并运行:
qmake
make
./InputDemo
验证方法
程序启动后,在输入框中键入任意文本(例如“Hello Qt”),按下回车键,观察标签是否立即显示相同内容。若标签文本与输入框内容一致,则功能验证通过。
关键说明
- 使用
returnPressed信号而非textChanged,确保只在用户确认输入(按回车)时更新标签,避免每次按键都刷新。 - Lambda表达式捕获
lineEdit和label指针,二者在窗口生命周期内始终有效,无需担心悬垂引用。 - 若使用Qt 6,
Q_OBJECT宏与#include "main.moc"的配合方式不变,编译命令相同。