我对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()来检查输出。我试过跳过设置函数并进行直接赋值,我尝试过使用"这个"关键字,我甚至尝试过将一个随机字符串直接分配给变量。
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::operator=(const char*)
文件中的qstring.h
结尾。正如我所提到的,我在这方面相对较新,所以我可能会明白我失踪了。但经过几个小时的谷歌搜索和尝试不同的变化,我很难过。我们非常感谢您的任何想法,如果您有更多有用的信息,请与我们联系。
答案 0 :(得分:0)
尝试将查询值分配给QString,如下所示:
QString str=query.value(0).toString();
setOrderID(str);
答案 1 :(得分:0)
正如预测的那样,我很遗憾。我在AutochargeData
类中创建了Mainwindow
的实例,但是尝试在不同的类中使用它而不创建它的另一个实例。所以这是无效的,正如评论中所猜测的那样。