按下键时如何更改QLineEdit中的文本

时间:2019-07-02 11:54:42

标签: c++ qt qt5 qlineedit

我有一个继承自qwidget的类。在该类中,我创建一个按钮btn和一个QLineEdit l,并将其文本设置为“ hello”。按下按钮时,应将l的内容更改为“ bibi”。

完全删除网格后,它可以正常工作,但是以某种方式在该位置时,该程序总是崩溃。我以为网格只会改变按钮和QLineEdits的位置,所以这对我来说没有意义。

这是主要的

#include <cellphone.h>

int main(int argc, char *argv[])
{
    return CellPhone::spawn(argc, argv);
}

这是类声明

#ifndef CELLPHONE_H
#define CELLPHONE_H

#include <QtWidgets>
#include <QWidget>
#include <QPushButton>
#include <QString>

class CellPhone : public QWidget
{
    Q_OBJECT
    public:
        QLineEdit *l;
        static int spawn(int argc, char *argv[]);
        CellPhone();
    //public slots:
        void keyPressEvent(QKeyEvent* event);
};
#endif // CELLPHONE_H

这是类定义

#include "cellphone.h"

int CellPhone::spawn(int argc, char *argv[]){
    QApplication app(argc, argv);
    CellPhone P;
    return app.exec();
}
CellPhone::CellPhone() : QWidget() {
    QLineEdit *l = new QLineEdit(this);
    l->setText("Hello");
    QPushButton *btn = new QPushButton("1", this);
    QObject::connect(btn, &QPushButton::clicked, [&]{l->setText("bibi");});
    QGridLayout *grid = new QGridLayout();
    grid->addWidget(l, 1, 1, 1, 3);
    grid->addWidget(btn, 1, 2, 1, 3);
    this->setLayout(grid);
    //btn->move(100,0);

    this->show();
}
void CellPhone::keyPressEvent(QKeyEvent* event){
    //l->setText("Hi");
}

QtCreator不会向我提供任何错误消息,但是程序发疯了。

0 个答案:

没有答案