我在Qt打印时遇到问题。
我在QString变量中有HTML代码。在这段代码中,我想从数据库中插入数据。
我收到错误:
E:\apprendreQt\gestionstock6\vente.cpp:117: error: invalid operands of types
'const char*' and 'const char [27]' to binary 'operator+'
我该如何解决这个问题?
这是我的代码:
int num_bl = ui->numeroBLlineEdit->text().toInt() ;
QString html;
QString requette = "select num_facture,date,nom,prenom,code_fiscale,designation,qte_out, prix,(qte_out * prix ) as Montant, sum(qte_out * prix) as Total from ventes join produits_en_ventes join clients join produits on ventes.vente_id = produits_en_ventes.vente_id and ventes.client_id = clients.client_id and produits_en_ventes.produit_id = produits.produit_id where ventes.client_id = :client_id ";
if(!m_db->isOpen())
QMessageBox::critical(this,tr("Inventoria Solution"),m_db->lastError().text()) ;
else{
m_query->clear();
m_query->prepare(requette);
m_query->bindValue(":client_id ", num_bl);
if(!m_query->exec())
QMessageBox::critical(this,tr("Inventoria Solution"),m_query->lastError().text()) ;
else{
html += " <table>"
"<thead>"
"<tr>"
"<th>N°</th>"
"<th>Désignation</th>"
"<th>Qte</th>"
"<th>Prix Unitaire</th>"
"<th>Montant</th>"
" </tr>"
"</thead>";
while(m_query->next())
{
int num_article = 1;
html += "<tr> <td>" + num_article + "</td> <td>"+m_query->value(5).toString()+"</td> <td>"+m_query->value(6).toInt() + "</td> <td>"+m_query->value(7).toInt() + "</td> <td>" + m_query->value(8).toInt() + "</td></tr>";
num_article++;
}
html += "<tfoot>"
"<tr>"
"<td>Total:"+ m_query->value(9).toInt()+"</td>"
"</tr>"
"</tfoot>"
"</table>";
}
print_Html(html);
}
答案 0 :(得分:23)
我不确定你的错误。但是,AFAIK和Qstring不能与int连接。
int myInt = 0;
QString text = "someString" + myInt; // WRONG
int myInt = 0;
QString text = "someString" + QString::number( myInt ); // CORRECT
或
int myInt = 0;
QString text = "someString" % QString::number( myInt ); // CORRECT
答案 1 :(得分:11)
如果使用operator+
,则需要提供QString作为参数,但是使用整数值:html += "<tr> <td>" + num_article
,其中num_article
声明为整数。您可以将其替换为,例如:QString::number(num_article)
。同样在这一行:
"<td>Total:"+ m_query->value(9).toInt()+"</td>"
应替换为
"<td>Total:"+ m_query->value(9).toString()+"</td>"
答案 2 :(得分:3)
在Qt5中,你可以使用QStringLiteral
macro为不需要本地化的每个字符串将所有字符串文字从const char*
(C ++默认值)转换为QString,这也将创建那些QStrings
更便宜(在支持它的编译器上)
对于Qt4,您可以使用QString(const char*)
构造函数或QString::fromAscii(const char*)
静态函数