我在执行此代码时遇到了一些问题:
void WidgetAggiungi::btnAggiungi_click(){
QDate data=editData->date();
if (radioTelefonata->isChecked()){
QString numTemp=txtNumero->text();
...
}
当我尝试访问txtNumero时,我遇到了分段错误。 txtNumero是一个QLineEdit,作为WidgetAggiungi的私人成员而被删除。 困扰我的是QDateEdit editData工作正常,即使它被删除并以与txtNumero相同的方式创建。
WidgetAggiungi的所有代码都在github上:https://github.com/GiacomoManzoli/qdb/blob/master/widgetaggiungi.h https://github.com/GiacomoManzoli/qdb/blob/master/widgetaggiungi.cpp
答案 0 :(得分:2)
您在头文件中声明了txtNumero
。但是在你做的构造函数中:
QLineEdit* txtNumero = new ...
所以你没有在标题上初始化txtNumero。这就是为什么它给你带来了段错误。
答案 1 :(得分:0)
在你的构造函数中:
QLineEdit* txtNumero = new QLineEdit();
您正在声明一个局部变量,而不是实例化您的类成员。只需删除开头的类型:
txtNumero = new QLineEdit();
答案 2 :(得分:0)
你有两个问题,其中一个是严重的,另一个是次要的内存泄漏:
首先,您创建了QLineEdit
,如下所示:
QLineEdit* txtNumero= new QLineEdit();
即创建一个名为txtNumero
的本地变量,而不是将其分配给类成员。你应该写这个:
txtNumero= new QLineEdit();
看来你在一些地方犯了这个错误。您应该对所有这些应用程序应用类似的修复程序。
此外,您应该将父项传递给构造函数,以便它们自动清理。像这样:
txtNumero= new QLineEdit(this);
希望这有帮助!