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"

运行方式

  1. 将上述代码保存为main.cpp。
  2. 在相同目录下创建InputDemo.pro项目文件,内容如下:
QT += widgets
SOURCES += main.cpp
TARGET = InputDemo
  1. 在终端执行以下命令编译并运行:
qmake
make
./InputDemo

验证方法

程序启动后,在输入框中键入任意文本(例如“Hello Qt”),按下回车键,观察标签是否立即显示相同内容。若标签文本与输入框内容一致,则功能验证通过。

关键说明

  • 使用returnPressed信号而非textChanged,确保只在用户确认输入(按回车)时更新标签,避免每次按键都刷新。
  • Lambda表达式捕获lineEdit和label指针,二者在窗口生命周期内始终有效,无需担心悬垂引用。
  • 若使用Qt 6,Q_OBJECT宏与#include "main.moc"的配合方式不变,编译命令相同。