0

好吧,这证明我是编码的菜鸟!我到处寻找,但仍然无法做到这一点。这应该很简单。

我一直在尝试这个:

int i;
for(i=0;i<16;i++)
{
  QChar q = QChar(memblock[i]);
  QString s = QString(q);
  QTableWidgetItem *item = new QTableWidgetItem(s);
  ui->tableWidget->setItem(rowCount, colCount, item);
}

所以我从每个字符串制作表格项目。那是因为我也不知道如何从 QChar 或普通字符中制作表格项目。

但是每个单元格最终都会得到:

Ý

而当我添加时:

cout << memblock[i];

它正确显示:

RIFFd2  WAVEfmt 

这是读取原始数据的代码:

ifstream file (text, ios::in|ios::binary|ios::ate);
if (file.is_open())
{
    size = file.tellg();
    memblock = new char [size];
    file.seekg(0, ios::beg);
    file.read(memblock, size);
    file.close();
}

另外,当我这样做时cout << &memblock[i],对于 i 从 0 到 4 我得到: RIFFd2 IFFd2 FFd2 Fd2

等等。

4

1 回答 1

3

我已经设法在 Qt 4.8.3 和 MSVC 2010 中使用了一些简化的代码变体:

ui.tableWidget->setColumnCount(5);
ui.tableWidget->setRowCount(5);
char *memChunck = new char[25];
for ( int i = 0; i < 25; ++i ) {
    memChunck[i] = i + 65;
}
for ( int i = 0; i < 25; ++i ) {
    QTableWidgetItem *item = new QTableWidgetItem(QString::number( memChunck[i], 16).toUpper() );
    ui.tableWidget->setItem(i / 5, i % 5, item);
}

结果视图

于 2013-06-19T17:34:12.950 回答