2014-12-27 52 views
0

我试图创建一个Qt的线自动填充编辑,但我的程序崩溃的原因,我无法理解,这使得它崩溃是Qt的程序意外成品

model_Customer->setTable("Customer"); 
model_Customer->select(); 
model_Product->setTable("Product"); 
model_Product->select(); 
Account_completer->setModel(model_Customer); 
Product_completer->setModel(model_Product); 
Account_completer->setCaseSensitivity(Qt::CaseInsensitive); 
Product_completer->setCaseSensitivity(Qt::CaseInsensitive); 
AutoComplete(); 
ui->lineEdit_Invoice_Account->setCompleter(Account_completer); 
ui->lineEdit_Invoice_Product->setCompleter(Product_completer); 

我.h文件中低于

代码
QSqlDatabase db; 
QSqlTableModel *model_Customer; 
QSqlTableModel *model_Product; 
QCompleter *Account_completer; 
QCompleter *Product_completer; 

谢谢

+1

您是否创建了模型的新实例?像:'model_Customer = new QSqlTableModel(this,db);' – Nejat 2014-12-27 18:32:41

+0

谢谢,我刚刚注意到我忘了补充说 – Root0x 2014-12-27 18:35:29

回答

1

当你试图使用未分配的指针,你使用的是悬挂指针,它是不确定的行为,但大多数时候,它是一个崩溃。最糟糕的是,这是一个让你的程序表现怪异的错误。

请记住始终初始化您的指针,即使它是0,NULLnullptr。最好的方法是如果你习惯了就地统一初始化,那么你应该能够使用C++ 11或更高版本。

此外,通过使用像valgrind,gdb和其他内存跟踪器这样的工具,这些问题相对容易被发现。