【发布时间】:2021-06-06 15:30:26
【问题描述】:
请指导我在从 qlineedit 读取文本时找到这个简化代码的问题。我的代码在 editUser->text() 行中退出。删除此行后,其他一切都正常。
#include ...
QString USERID_LOG="SomeThing";
logDialog::logDialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::logDialog)
{
ui->setupUi(this);
QLineEdit* editUser= new QLineEdit( this );
QPushButton* okButton = new QPushButton(tr("OK"));
connect(okButton, SIGNAL(clicked()), this,SLOT(okSlot()));
...
}
void logDialog::okSlot()
{ USERID_LOG=editUser->text(); //////// Error is here
logDialog::accept();
return; }
QString logDialog::GetUser()
{
return(USERID_LOG);
}
////////////////////////////logdialog.h/////////////////////////
QT_BEGIN_NAMESPACE
namespace Ui { class logDialog; }
QT_END_NAMESPACE
class logDialog : public QDialog
{
Q_OBJECT
public:
logDialog(QWidget *parent = nullptr);
~logDialog();
QString GetUser();
public slots:
void okSlot();
private:
QLineEdit* editUser;
QPushButton* okButton;
Ui::logDialog *ui;
};
【问题讨论】:
-
错误是什么?
-
您在构造函数中初始化的
editUser对于构造函数是本地的——它不是同名的类成员。因此,类成员editUser未初始化,导致未定义的行为。okButton也是如此。 -
@Retired Ninja, it is : 程序意外结束了。
-
@G.M. , 非常感谢你。我删除了 QLineEdit*,它现在可以工作了。