Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сохранение QtableWidget
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Модель/Представление
Elrow
Пытаюсь сохранить из QtableWidget в текстовый файл. Вместо русских букв сохраняется непонятно что. Кто может помочь?

void MainWindow::on_Save_Book_clicked()                                                                                                                                 
{
    QString fr= QFileDialog::getSaveFileName(this,tr("Save"),"c:/",tr("CSV Files (*.csv)"));
  QFile file(fr);
  file.open(QIODevice::WriteOnly | QIODevice::Text);
  int i;
  QTextStream out(&file);
  out<<QObject::tr("Название;Автор;Год;Рейтинг\n");
  out<<ui->tableWidget->item(1,1);
   for (i=0;i<5;i++){
       for (int j=0;j<5;j++){
    out<<ui->tableWidget->item(i,j);
    out<<";";
        };
       out<<"\n";
   };
  file.close();
}

Пытаюсь переделать через String и потом через tr() сделать нормально, но не получается.
QString tt;
tt=(ui->tableWidget->item(i,j));


Должно быть:
Гарри Поттер;Роулинг;2008;8
Источник;Айн Рэнд;2011;9

Получается:
0xf1f1a480xf1e3288;0xf2156a0;0xf1f1568;0xf1f1848;0xf1f19c8;
0xf1f19c8;0xf1f1a48;0xf1f15e8;0xf1f1928;0x0;
0x0;0x0;0x0;0x0;0x0;
0x0;0x0;0x0;0x0;0x0;
0x0;0x0;0x0;0x0;0x0;

Помогите пожалуйста!
wiz29
QTextStream out(&file);
out.setTextCodec(QTextCodec::codecForName("windows-1251"));//для винды


QTextStream out(&file);
out.setTextCodec(QTextCodec::codecForName("koi8-r"));//для unix
//или
//out.setTextCodec(QTextCodec::codecForName("utf8"));

Все зависит от того какой кодек используется для текста в системе.

Очевидно что у тебя сейчас сохраняется как юникодовая строка.
Elrow
Попытался переделать - не получилось.

void MainWindow::on_Save_Book_clicked()                                                                                                                                
{
  QString fr= QFileDialog::getSaveFileName(this,tr("Save"),"c:/",tr("CSV Files (*.csv)"));
  QFile file(fr);
  file.open(QIODevice::WriteOnly | QIODevice::Text);
  QTextStream out(&file);
  out<<QObject::tr("Название;Автор;Год;Рейтинг\n");
   out.setCodec(QTextCodec::codecForName("windows-1251"));
for (int i=0;i<4;i++){
       for (int j=0;j<4;j++){
   out<<ui->tableWidget->item(i, j);
    out<<";";
        };
       out<<"\n";
   };

  file.close();



Может есть какие-то другие способы борьбы с этим?
wiz29
а как добавляются строковые данные в таблицу?
Elrow
Цитата(wiz29 @ 4.6.2012, 18:30) *
а как добавляются строковые данные в таблицу?


Сейчас я просто на форме ввожу данные по строкам.
А по сути будет кнопка, которая откроет форму, заполняющую все ячейки строки
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.