wysota, will fix that, now it is mandatory to make the code work. Here is the code that uses model:
Qt Code:
  1. // slot for choosing merchandize
  2. void COperationWIndow::chooseMerchandize()
  3. {
  4. structOrder tmpOrder; // temp order
  5. QList<QStandardItem*> OrderItemList; // order model item list
  6.  
  7. qDebug() << "m_iSelected: " << m_pMerchandizeBrowser->m_iSelected;
  8. // FIXED: m_pMerchandizeBrowser->m_iSelected does not correctly show the index of selected image
  9. /*
  10.   tmpOrder.iMerchandizeID=1;
  11.   tmpOrder.iMerchandizeQuantity=25;
  12.   tmpOrder.rMerchandizePrice=4.00;
  13.   tmpOrder.rSubtotal=tmpOrder.iMerchandizeQuantity*tmpOrder.rMerchandizePrice;
  14.   tmpOrder.strMerchandizeName=QString("Testni Artikel");
  15.   tmpOrder.strDisplayString=QString::number(tmpOrder.iMerchandizeID)+strMerchandizeSpaceDelimiter+\
  16.   QString(tmpOrder.strMerchandizeName)+strMerchandizeDelimiter+\
  17.   QString::number(tmpOrder.rMerchandizePrice, 'f', iMerchandizePricePrecision)+strMerchandizeSpaceDelimiter+\
  18.   QString::number(tmpOrder.iMerchandizeQuantity)+strMerchandizeSpaceDelimiter+\
  19.   QString::number(tmpOrder.rSubtotal, 'f', iMerchandizePricePrecision);
  20.   qDebug() << "tmpOrder.strDisplayString=" << tmpOrder.strDisplayString;
  21. */
  22.  
  23. // TODO: language id number must not be ignored in sql statement
  24. QString queryString("SELECT * from merchandize WHERE IdentificationNumber=%1 AND InUse=1;");
  25. int iMerchandizeId=m_pMerchandizeBrowser->m_iSelected+1; // calcualtes id
  26. queryString=queryString.arg(iMerchandizeId); // adds id to query string
  27. qDebug() << "Query: " << queryString; // debug
  28. QSqlQuery query(queryString); // sets up query from query string
  29. qDebug() << query.lastError().text(); // debug
  30. if (query.isActive())
  31. {
  32. while (query.next())
  33. {
  34. tmpOrder.iMerchandizeID=query.value(0).toInt();
  35. tmpOrder.iMerchandizeQuantity=1;
  36. tmpOrder.rMerchandizePrice=(qreal)query.value(3).toDouble();
  37. tmpOrder.rSubtotal=tmpOrder.iMerchandizeQuantity*tmpOrder.rMerchandizePrice;
  38. tmpOrder.strMerchandizeName=QString(query.value(2).toString());
  39. tmpOrder.strDisplayString=QString::number(tmpOrder.iMerchandizeID)+strMerchandizeSpaceDelimiter+\
  40. QString(tmpOrder.strMerchandizeName)+strMerchandizeDelimiter+\
  41. QString::number(tmpOrder.rMerchandizePrice, 'f', iMerchandizePricePrecision)+strMerchandizeSpaceDelimiter+\
  42. QString::number(tmpOrder.iMerchandizeQuantity)+strMerchandizeSpaceDelimiter+\
  43. QString::number(tmpOrder.rSubtotal, 'f', iMerchandizePricePrecision);
  44. }
  45.  
  46.  
  47. if(m_pShoppingCartView->order()->orders()->size()<=0)
  48. {
  49. // size of orders is zero, adds record to table
  50. m_pShoppingCartView->order()->orders()->append(tmpOrder); // adds order to internal qlist
  51. QStandardItem* pItem=new QStandardItem(QString(tmpOrder.strDisplayString));
  52. Q_CHECK_PTR(pItem); // checks creation
  53. m_pShoppingCartView->shoppingCartModel()->appendRow(pItem);
  54. }
  55. else
  56. {
  57. for(qint16 iIndex=0; iIndex<(qint16)m_pShoppingCartView->order()->orders()->size(); iIndex++)
  58. {
  59. qDebug() << " m_pShoppingCartView->order()->orders()->at((int)iIndex).iMerchandizeID (" \
  60. << m_pShoppingCartView->order()->orders()->at((int)iIndex).iMerchandizeID << ")==" \
  61. << "tmpOrder.iMerchandizeID (" << tmpOrder.iMerchandizeID << ")?";
  62. if(m_pShoppingCartView->order()->orders()->at((int)iIndex).iMerchandizeID==tmpOrder.iMerchandizeID)
  63. /*
  64.   qDebug() << " iMerchandizeId (" << iMerchandizeId \
  65.   << "tmpOrder.iMerchandizeID (" << tmpOrder.iMerchandizeID << ")?";
  66.   if(iMerchandizeId==tmpOrder.iMerchandizeID)
  67. */
  68. {
  69. // orderer merchandize found, so
  70. tmpOrder.iMerchandizeQuantity++; // update quantity
  71. tmpOrder.rSubtotal=tmpOrder.iMerchandizeQuantity*tmpOrder.rMerchandizePrice; // update total
  72. tmpOrder.strDisplayString=QString::number(tmpOrder.iMerchandizeID)+strMerchandizeSpaceDelimiter+\
  73. QString(tmpOrder.strMerchandizeName)+strMerchandizeDelimiter+\
  74. QString::number(tmpOrder.rMerchandizePrice, 'f', iMerchandizePricePrecision)+strMerchandizeSpaceDelimiter+\
  75. QString::number(tmpOrder.iMerchandizeQuantity)+strMerchandizeSpaceDelimiter+\
  76. QString::number(tmpOrder.rSubtotal, 'f', iMerchandizePricePrecision);
  77. m_pShoppingCartView->order()->orders()->replace((int)iIndex, tmpOrder); // saves changes
  78. m_pShoppingCartView->shoppingCartModel()->clear(); // clears table view
  79. for(qint16 iIndex=0; iIndex<(qint16)m_pShoppingCartView->order()->orders()->size(); iIndex++)
  80. {
  81. QStandardItem* pItem=new QStandardItem(QString(tmpOrder.strDisplayString)); // creates new item from order
  82. Q_CHECK_PTR(pItem); // checks creation
  83. OrderItemList.append(pItem); // adds item to list
  84. //m_pShoppingCartView->shoppingCartModel()->appendRow(pItem); // adds items
  85. }
  86. m_pShoppingCartView->shoppingCartModel()->appendRow(OrderItemList); // adds items
  87. break;
  88. }
  89. else
  90. {
  91. // ordered merchandize not found, so adds it
  92. m_pShoppingCartView->order()->orders()->append(tmpOrder); // adds order to internal qlist
  93. QStandardItem* pItem=new QStandardItem(QString(tmpOrder.strDisplayString)); // creates new item from list
  94. Q_CHECK_PTR(pItem); // checks creation
  95. m_pShoppingCartView->shoppingCartModel()->appendRow(pItem);
  96. break;
  97. } // for
  98. } // for
  99. } // if
  100. /*
  101.   m_pShoppingCartView->resizeColumnsToContents();
  102.   m_pShoppingCartView->resizeRowsToContents();
  103. */
  104. if(m_pOrderButton->isEnabled()==false)
  105. m_pOrderButton->setEnabled(true); // enables order buttn
  106. } // if
  107. }
To copy to clipboard, switch view to plain text mode 
The code
Qt Code:
  1. /*
  2.   m_pShoppingCartView->resizeColumnsToContents();
  3.   m_pShoppingCartView->resizeRowsToContents();
  4. */
To copy to clipboard, switch view to plain text mode 
is commented because here the app crashes by resizeRows. Why?!