Results 1 to 3 of 3

Thread: Problem with QTableWidgetItem

  1. #1
    Join Date
    Jun 2006
    Location
    San Diego, USA
    Posts
    95
    Thanks
    9
    Qt products
    Qt3 Qt4 Qt/Embedded
    Platforms
    Unix/X11 Windows

    Default Problem with QTableWidgetItem

    Hi

    I am having a problem with QTableWidgetItem.
    I created a table (2 rows, 11 columns) using QTableWidget.
    I have 2 functions, firstRowUpdate() and secondRowUpdate();

    When I am only using firstRowUpdate() function it works fine and updates the firstRow & its 11 columns.
    But I use secondRowUpdate() along with firstRowUpdate() function it overwrites the firstRowUpdate values in firstRow with secondRowUpdate function values.
    Both rows shows same values.

    Both the functions are similar in coding, except setting items with different values or strings to display, in firstRowUpdate() and secondRowUpdate() functions.

    What could be causing the problem, when i try to update both rows simultaneously.

    Thanks & Regards,
    Arun

  2. #2
    Join Date
    Jun 2006
    Location
    San Diego, USA
    Posts
    95
    Thanks
    9
    Qt products
    Qt3 Qt4 Qt/Embedded
    Platforms
    Unix/X11 Windows

    Default Re: Problem with QTableWidgetItem

    Forgot to add a snippet of code:

    Qt Code:
    1. void MainWindow::createTable()
    2. {
    3. tableWidget_wmhData->setRowCount(2);
    4. tableWidget_wmhData->setColumnCount(11);
    5. tableWidget_wmhData->setHorizontalHeaderLabels(QStringList() << tr(" Vehicle ID ") << tr(" UTC Time ") << tr(" Latitude ") << tr(" Longitude ") << tr(" VehSpd ") << tr(" Heading ") << tr("X-Accel") << tr("YawRate") << tr("BrkSts") << tr("Sequence#") << tr("Event"));
    6. tableWidget_wmhData->resizeColumnsToContents();
    7. }
    8.  
    9. void MainWindow::firstRowUpdate()
    10. {
    11. char hostVehID[6], hostUTCTimeStr[20];
    12. memset(&wmhHVData, 0, sizeof(wmhHVData));
    13. if(!get_wmh_hv_data( &shmPtr->wmh_data, &wmhHVData, NULL))
    14. {
    15. printf("EGUI-WMH: Host Vehicle Data Error\n");
    16. return;
    17. }
    18. else
    19. {
    20. sprintf(hostVehID, "%02x:%02x:%02x:%02x:%02x:%02x", wmhHVData.ota.basicMsg.tempId[0],
    21. wmhHVData.ota.basicMsg.tempId[1], wmhHVData.ota.basicMsg.tempId[2], wmhHVData.ota.basicMsg.tempId[3], wmhHVData.ota.basicMsg.tempId[4], wmhHVData.ota.basicMsg.tempId[5]);
    22. HostVehIDRow->setText("1");
    23. printf("HostVehID: %s \n", hostVehID);
    24.  
    25. Q_hostVehID = (const char *)hostVehID;
    26. wmhVehID->setText(Q_hostVehID);
    27. tableWidget_wmhData->setItem(0, 0, wmhVehID);
    28. epo_ms_to_time_str(hostUTCTimeStr, sizeof(hostUTCTimeStr), v_gettime(NULL));
    29. Q_wmhUTCTime = (const char *)hostUTCTimeStr;
    30. wmhUTCTime->setText(Q_wmhUTCTime);
    31. tableWidget_wmhData->setItem(0, 1, wmhUTCTime);
    32. wmhLatitude->setText(Q_wmhLatitude.setNum(wmhHVData.ota.basicMsg.latitude, 'f', 6));
    33. tableWidget_wmhData->setItem(0, 2, wmhLatitude);
    34. wmhLongitude->setText(Q_wmhLongitude.setNum(wmhHVData.ota.basicMsg.longitude, 'f', 6));
    35. tableWidget_wmhData->setItem(0, 3, wmhLongitude);
    36. wmhVehSpd->setText(Q_wmhVehSpd.setNum(wmhHVData.ota.basicMsg.canData.vehSpeed, 'f', 6));
    37. tableWidget_wmhData->setItem(0, 4, wmhVehSpd);
    38. wmhHeading->setText(Q_wmhHeading.setNum(wmhHVData.ota.basicMsg.heading, 'f', 6));
    39. tableWidget_wmhData->setItem(0, 5, wmhHeading);
    40. wmhXAccel->setText(Q_wmhXAccel.setNum(wmhHVData.ota.basicMsg.canData.latAccel));
    41. tableWidget_wmhData->setItem(0, 6, wmhXAccel);
    42. wmhYawRate->setText(Q_wmhYawRate.setNum(wmhHVData.ota.basicMsg.canData.yawRate));
    43. tableWidget_wmhData->setItem(0, 7, wmhYawRate);
    44. wmhBrkSts->setText(Q_wmhBrkSts.setNum(wmhHVData.ota.basicMsg.canData.brakeActive));
    45. tableWidget_wmhData->setItem(0, 8, wmhBrkSts);
    46. wmhSeqNum->setText(Q_wmhSeqNum.setNum(wmhHVData.ota.msgSequenceNum));
    47. tableWidget_wmhData->setItem(0, 9, wmhSeqNum);
    48. wmhEvent->setText(Q_wmhEvent.setNum(wmhHVData.ota.vehicleEvent));
    49. tableWidget_wmhData->setItem(0, 10, wmhEvent);
    50. }
    51. }
    52.  
    53. void MainWindow::secondRowUpdate()
    54. {
    55. char remoteVehID[6], remoteUTCTimeStr[20];
    56. bool remoteVeh;
    57. for ( remoteVeh = get_first_wmh_rv_data( &shmPtr->wmh_data, shmPtr->wmh_rv_data, &wmhRVData );
    58. (remoteVeh);
    59. remoteVeh = get_next_wmh_rv_data( &shmPtr->wmh_data, shmPtr->wmh_rv_data, &wmhRVData, &wmhRVData ))
    60. {
    61. sprintf(remoteVehID, "%02x:%02x:%02x:%02x:%02x:%02x", wmhRVData.ota.basicMsg.tempId[0],
    62. wmhRVData.ota.basicMsg.tempId[1], wmhRVData.ota.basicMsg.tempId[2],
    63. wmhRVData.ota.basicMsg.tempId[3], wmhRVData.ota.basicMsg.tempId[4],
    64. wmhRVData.ota.basicMsg.tempId[5]);
    65. printf("remoteVeh Boolean Value: %d, RemoteVehID: %s\n", remoteVeh, remoteVehID);
    66. Q_remoteVehID = (const char *)remoteVehID;
    67. qDebug() << "Qt Has RemoteID as: " << Q_remoteVehID << endl;
    68. wmhVehID->setText(Q_remoteVehID);
    69. tableWidget_wmhData->setItem(1, 0 , wmhVehID);
    70. epo_ms_to_time_str(remoteUTCTimeStr, sizeof(remoteUTCTimeStr), v_gettime(NULL));
    71. Q_wmhUTCTime = (const char *)remoteUTCTimeStr;
    72. wmhUTCTime->setText(Q_wmhUTCTime);
    73. tableWidget_wmhData->setItem(1, 1, wmhUTCTime);
    74. wmhLatitude->setText(Q_wmhLatitude.setNum(wmhRVData.ota.basicMsg.latitude, 'f', 6));
    75. tableWidget_wmhData->setItem(1, 2, wmhLatitude);
    76. wmhLongitude->setText(Q_wmhLongitude.setNum(wmhRVData.ota.basicMsg.longitude, 'f', 6));
    77. tableWidget_wmhData->setItem(1, 3, wmhLongitude);
    78. wmhVehSpd->setText(Q_wmhVehSpd.setNum(wmhRVData.ota.basicMsg.canData.vehSpeed, 'f', 6));
    79. tableWidget_wmhData->setItem(1, 4, wmhVehSpd);
    80. wmhHeading->setText(Q_wmhHeading.setNum(wmhRVData.ota.basicMsg.heading, 'f', 6));
    81. tableWidget_wmhData->setItem(1, 5, wmhHeading);
    82. wmhXAccel->setText(Q_wmhXAccel.setNum(wmhRVData.ota.basicMsg.canData.latAccel));
    83. tableWidget_wmhData->setItem(1, 6, wmhXAccel);
    84. wmhYawRate->setText(Q_wmhYawRate.setNum(wmhRVData.ota.basicMsg.canData.yawRate));
    85. tableWidget_wmhData->setItem(1, 7, wmhYawRate);
    86. wmhBrkSts->setText(Q_wmhBrkSts.setNum(wmhRVData.ota.basicMsg.canData.brakeActive));
    87. tableWidget_wmhData->setItem(1, 8, wmhBrkSts);
    88. wmhSeqNum->setText(Q_wmhSeqNum.setNum(wmhRVData.ota.msgSequenceNum));
    89. tableWidget_wmhData->setItem(1, 9, wmhSeqNum);
    90. wmhEvent->setText(Q_wmhEvent.setNum(wmhRVData.ota.vehicleEvent));
    91. tableWidget_wmhData->setItem(1, 10, wmhEvent);
    92. }
    93. }
    94.  
    95. /* Starts Timer twice a second*/
    96. void MainWindow::startEGUIDataTimer()
    97. {
    98. eguiDisplayTimer = new QTimer();
    99. connect(eguiDisplayTimer, SIGNAL(timeout()), this, SLOT(printData()));
    100. eguiDisplayTimer->start(500);
    101. }
    102.  
    103. void MainWindow::printData()
    104. {
    105. fisrtRowUpdate();
    106. memset(&wmhRVData, 0, sizeof(wmhRVData));
    107.  
    108. remoteVehCount = get_wmh_rv_num(&shmPtr->wmh_data); //Collecting Remote Vehicles Count
    109. printf("Remote Veh Count: %d\n", remoteVehCount);
    110.  
    111. if(remoteVehCount > 0)
    112. {
    113. secondRowUpdate();
    114. }
    115. }
    To copy to clipboard, switch view to plain text mode 
    This is what I am doing, what i am doing wrong, when i use secondRowUpdate() it displays same in both rows, if I use only firstRowUpdate() it works fine.

    Thanks & Regards,
    Arun
    Last edited by jpn; 12th May 2008 at 14:14. Reason: missing [code] tags

  3. #3
    Join Date
    Jun 2006
    Location
    San Diego, USA
    Posts
    95
    Thanks
    9
    Qt products
    Qt3 Qt4 Qt/Embedded
    Platforms
    Unix/X11 Windows

    Default Re: Problem with QTableWidgetItem

    I found out what the problem is,

    The problem is with usage of same QWidgetTableItems for both the rows.

    Now if I change with different QWidgetTableItems I am getting correct values, in each row.

    But I have one more problem, i have one more table which has 20rows and 10 columns.
    For 20rows and 10 columns , i need to create 200 QTableWidgetItems with different variables.
    How can i create 200 QTableWidgetItems, in a simpler or best way.

    Thanks & Regards,
    Arun

Similar Threads

  1. problem with paint and erase in frame
    By M.A.M in forum Qt Programming
    Replies: 9
    Last Post: 4th May 2008, 20:17
  2. Tricky problem with ARGB widget / UpdateLayeredWindow
    By nooky59 in forum Qt Programming
    Replies: 3
    Last Post: 21st February 2008, 10:35
  3. Interesting little Segfault w/r to signal/slot connection
    By Hydragyrum in forum Qt Programming
    Replies: 24
    Last Post: 12th September 2006, 19:22
  4. Problem inserting in QTableWidget
    By DPinLV in forum Qt Programming
    Replies: 2
    Last Post: 2nd August 2006, 00:10
  5. Replies: 16
    Last Post: 7th March 2006, 15:57

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Qt is a trademark of The Qt Company.