如何将char转换为QString?

时间:2013-06-19 16:07:31

标签: c++ qt char qstring

这证明我在编码方面是一个菜鸟!我到处寻找,仍然无法做到这一点。这应该很简单。

我一直在尝试这个:

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]时,对于我从0到4,我得到: RIFFd2 IFFd2 FFd2 Fd2

等等。

1 个答案:

答案 0 :(得分: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);
}

result view