crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Сохранение QtableWidget
Elrow
  опции профиля:
сообщение 4.6.2012, 9:28
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 4.6.2012
Пользователь №: 3410

Спасибо сказали: 0 раз(а)




Репутация:   0  


Пытаюсь сохранить из 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
  опции профиля:
сообщение 4.6.2012, 10:25
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


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
  опции профиля:
сообщение 4.6.2012, 15:25
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 4.6.2012
Пользователь №: 3410

Спасибо сказали: 0 раз(а)




Репутация:   0  


Попытался переделать - не получилось.

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
  опции профиля:
сообщение 4.6.2012, 15:30
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


а как добавляются строковые данные в таблицу?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Elrow
  опции профиля:
сообщение 4.6.2012, 15:32
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 4.6.2012
Пользователь №: 3410

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(wiz29 @ 4.6.2012, 18:30) *
а как добавляются строковые данные в таблицу?


Сейчас я просто на форме ввожу данные по строкам.
А по сути будет кнопка, которая откроет форму, заполняющую все ячейки строки
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.12.2024, 17:25