QString分配崩溃
Crash on QString assignment
我对Qt和C++还很陌生,所以我可能错过了一些显而易见的东西,但就我个人而言,我不知道出了什么问题。每当我尝试做一个基本的字符串赋值时,我编写的程序中的一个类就会导致崩溃。见下文(略为精简)。
class AutochargeData : public QWidget
{
public:
AutochargeData(appData *appInfo, QWidget *parent = 0);
QString orderNum;
QString paymentMethod;
QString total;
void setPayment(QString payment);
void setOrderID(QString orderID);
void setTotal(QString total);
void getPaymentData(QString orderID);
private:
appData *appInfo;
};
因此,在下面的代码中,我尝试了许多变体。我知道这个查询很好,因为我使用了qDebug()来检查输出。我试过跳过集合函数并直接赋值,我试过使用"this"关键字,甚至试过直接给变量赋值一个随机字符串。
AutochargeData::AutochargeData(appData *appInfo, QWidget *parent) :
QWidget(parent)
{
this->appInfo = appInfo;
}
void AutochargeData::getPaymentData(QString orderID)
{
QString queryString = "SELECT order_payment.method, order.increment_id, order.grand_total FROM order JOIN order_payment ON sales_flat_order.entity_id = order_payment.parent_id WHERE order.increment_id = '" + orderID + "';";
QSqlQuery query(queryString, QSqlDatabase::database("db"));
query.exec();
while (query.next()) {
setOrderID(query.value("increment_id").toString());
setPayment(query.value("method").toString());
setTotal(query.value("grand_total").toString());
}
}
void AutochargeData::setPayment(QString payment)
{
paymentMethod = payment;
}
void AutochargeData::setOrderID(QString orderID)
{
orderNum = orderID;
}
void AutochargeData::setTotal(QString grandTotal)
{
total = grandTotal;
}
每当我试图将字符串分配给orderNum
、paymentMethod
或total
变量时,程序都会崩溃。调试器将在qstring.h
文件中的QString::operator=(const char*)
上结束。正如我所提到的,我在这方面相对较新,所以我显然缺少一些东西。但在谷歌上搜索了几个小时并尝试了不同的变体后,我被难住了。任何想法都将不胜感激,如果有更多有用的信息,请告诉我。
正如预测的那样,我显然缺少了一些东西。我在Mainwindow
类中创建了一个AutochargeData
的实例,但试图在另一个类中使用它,而没有创建另一个实例。因此,正如评论中猜测的那样,它是无效的。
尝试将查询值分配给QString,如下所示:
QString str=query.value(0).toString();
setOrderID(str);
相关文章:
- c++11:在VS2015中分配全局STL "map<string, string>" initializer_list崩溃
- 分配内存并在回调时调用C++的 Rust 函数崩溃
- STD :: FSTREAM在使用预先分配的内存时在Main之后崩溃
- 当我尝试将一个向量元素的值分配给另一个向量元素时,为什么我的应用程序会崩溃
- 在崩溃时释放分配的指针的正确方法
- PCL发布构建崩溃而无法分配
- 当我释放由CFFI生成的DLL分配的char*时,为什么我的应用程序会崩溃
- 为什么在复制构造函数中分配联合成员会崩溃
- 在构造函数[C ]中的FP分配上崩溃
- 矢量未正确擦除内容(复制分配运算符的量运行直到崩溃 [BEX])
- 程序在解除分配字符数组时崩溃
- 删除在不同函数中动态分配的对象时崩溃
- 如果在进程崩溃后在进程中分配内存,会发生什么情况
- CComPtrBase::~解除分配智能指针时,CComPtr Base崩溃
- 删除矢量元素指向的已分配内存会导致程序崩溃
- 矩阵分配导致崩溃
- 释放动态分配的内存时程序崩溃
- Boost.SSpirit.Qi在将规则分配给包括自身在内的序列时崩溃
- QString分配崩溃
- 程序崩溃(动态内存分配)