00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <QTableWidget>
00026
00027 #include <sstream>
00028 #include <iostream>
00029 #include <string>
00030
00031 #include "mfertablewidget.h"
00032 #include "mferreader.h"
00033
00034 MferTableWidget::MferTableWidget(QWidget *parent)
00035 : QTableWidget(parent)
00036 {
00037 setVisible(false);
00038 }
00039 void MferTableWidget::fillTableWidget(const MferReader &mr)
00040 {
00041 if (!mr.isValid())
00042 {
00043 return;
00044 }
00045 QStringList sl;
00046 std::ostringstream ss;
00047 sl << "*" << "No." << "Address";
00048 sl << "Data" << "Type" << "Length" << "Contents";
00049
00050 setColumnCount(7);
00051 setHorizontalHeaderLabels(sl);
00052 setRowCount(mr.tagsVector.size());
00053
00054 for (int i = 0; i < mr.tagsVector.size(); i++)
00055 {
00056 ss << "*" << "\t" <<
00057 std::dec << i + 1 << "\t" <<
00058 std::hex << mr.tagsVector[i].offset << "\t";
00059
00060 for (int j = 0; j < mr.tagsVector[i].length && (
00061 mr.tagsVector[i].value != NULL); j++)
00062 {
00063 ss << std::hex << (qint16)mr.tagsVector[i].value[j] << " ";
00064 }
00065
00066 ss << "\t" <<
00067 std::hex << mr.tagsVector[i].type << "\t" <<
00068 std::dec << mr.tagsVector[i].length << "\t";
00069
00070 std::string ssss(ss.str());
00071 QString str(ssss.c_str());
00072 QStringList col = str.split('\t');
00073
00074 ss.str("");
00075 for (int k = 0; k < columnCount(); k++)
00076 {
00077 QTableWidgetItem *item = new QTableWidgetItem;
00078 item->setText(col[k]);
00079 setItem(i, k, item);
00080 }
00081 }
00082
00083 setVisible(true);
00084 }
00085
00086 QSize MferTableWidget::sizeHint() const
00087 {
00088 return QSize(columnWidth(0) * (columnCount() + 1),
00089 rowHeight(1) * (rowCount() + 1));
00090 }