2013-06-19 42 views
0

那么这证明我是编码的小白!我到处寻找,仍然无法得到这个权利。这应该很简单。如何将字符转换为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

等。

+0

您可以加入到后它初始化'memblock'代码变量 – Ivan

+0

'memblock = new char [size]' – krb686

+0

老实说,它应该和'QTableWidgetItem item = new QTableWidgetItem(memblock [i])一样简单;' – krb686

回答

3

我已经成功地使用你的代码的一些简化字使用Qt 4.8.3和2010 MSVC:

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

+0

好吧,这似乎与我有什么相似。尽管如此,我可能有些误述了我的意图。我实际上并不需要Ascii表示我的数据,我想将原始数据作为字符串。换句话说,我想要65,66,67,68等等。 我真正想要的是:http://imgur.com/QtaspOK – krb686

+0

@ krb686,只是改变了代码。在更新的屏幕截图上,我使用了您提供的链接中的表格数据。 – Ivan

+0

我改变了我的代码,以确切地匹配你的代码,但由于某种原因,它并不完整。这是改变后的样子:http://imgur.com/tsJ2e22 我认为这可能与我的'memblock'有关系 我更新了原始文章,显示了我正在使用的原始代码数据。 – krb686