Как я могу изменить текст в QLineEdit при нажатии клавиши - PullRequest
0 голосов
/ 02 июля 2019

У меня есть класс, который наследуется от qwidget. В этом классе я создаю кнопку btn и QLineEdit l и устанавливаю для ее текста значение "привет". При нажатии на кнопку он должен изменить содержание 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 не предоставил мне ни одного сообщения об ошибке, но программа была обработана.

...