我有一个继承自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不会向我提供任何错误消息,但是程序发疯了。