Russian Qt Forum
Май 05, 2024, 19:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание отчетов  (Прочитано 6267 раз)
crocus
Гость
« : Декабрь 14, 2005, 08:45 »

Подскажите способ записать данные таблицы в TextStream типа:
    QFile file("file1.txt");
    QTextStream stream(&file);
  //  if (file.open(QIODevice::WriteOnly | QIODevice::Append))
      if (file.open( QFile::WriteOnly | QFile::Text))  
    {
        stream << tableView  ;// данные таблицы tableView
    }
    file.close();
Записан
Agriop
Гость
« Ответ #1 : Декабрь 14, 2005, 12:43 »

Цитата: "crocus"
Подскажите способ записать данные таблицы в TextStream типа:
    QFile file("file1.txt");
    QTextStream stream(&file);
  //  if (file.open(QIODevice::WriteOnly | QIODevice::Append))
      if (file.open( QFile::WriteOnly | QFile::Text))  
    {
        stream << tableView  ;// данные таблицы tableView
    }
    file.close();

А так не работает?
Код:

class CTableView {  // класс объекта tableView
...

friend QTextStream &operator<<(QTextStream &stream, const CTableView &view) {
  stream << data1;
  stream << data2;
  return stream;
}
...
};


P.S. Если это Qt 4, то зачем сохранять tableView? Может лучше tableModel?
Записан
crocus
Гость
« Ответ #2 : Декабрь 16, 2005, 05:35 »

Как же все-таки распечатать данные из таблицы tableView
что собственно и является отчетом, не пойму что в поток stream выводить.
Записан
crocus
Гость
« Ответ #3 : Декабрь 19, 2005, 07:39 »

Сделал так:
QFile file("file1.htm");
    QTextStream stream(&file);
    if (file.open( QFile::WriteOnly | QFile::Text))
    {
        stream << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
        << "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"
        << "<html>\n"
        << "<head>\n"
        << "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=cp-1251\" />\n"
        << "</head>\n"
        << "<body bgcolor=\"#F1DABC\">\n";
        stream << "<table width=\"100%\" border=\"1\" bordercolor=\"#710000\" cellspacing=\"0\"\n>"
        "<tr><td align=\"center\">" + tr("Кол-во комнат") + "</td><td align=\"center\">Вид продажи</td>"
        "<td align=\"center\">Район</td><td align=\"center\">Улица</td>"
        "<td>Sо</td><td >Sж</td><td >Sк</td><td >Этаж</td><td >Этажность</td><td >Материал</td>"
        "<td align=\"center\">Планировка</td><td align=\"center\">Санузел</td><td >Б/Л</td><td align=\"center\">Цена</td><td >Телефон</td><td >Тип объекта</td>"
        "<td align=\"center\">Сторона света</td><td>Состояние</td><td>Агент</td><td></td><td align=\"center\">Примечание</td></tr>";
        for ( long int i = 0; i < model->rowCount(); ++i)
        {
            stream << "<tr>";
            for ( long int k = 0; k < model->columnCount(); ++k)
            {
                QModelIndex index = model->index(i, k);
             
                if (k != 0)
                {
                   if (k != 1)
                   {
                   if (k != 16)
                   {
                   stream << "<td align=\"center\">" + model->data(index, Qt::DisplayRole).toString() + "</td>";
                   }
                   }
                }
                               
            }
            stream << "</tr>\n";
        }
        stream << "</table>\n"
        << "</body>\n"
        << "</html>";
    }
    file.close();

1. нормально все получается только непонятки там где конструкция IF,
 по идее должно работать логическое включающее ИЛИ  в виде
 if (k != 0 || k !=1) , однако не работает.
2. А предворительный просмотр (preview) страницы кто-нибудь реализовывал (ну типа как в Excele или Firefoxe с масштабированием и колонтитулами).
Записан
Dendy
Гость
« Ответ #4 : Декабрь 19, 2005, 09:58 »

Цитата: "crocus"
if (k != 0 || k !=1)


Немного не в тему, но... Конструкция вьlше (k != 0 || k !=1) == !(k == 0 && k == 1) == !(false) == true. То-есть всегда правда.
Записан
Вудруф
Гость
« Ответ #5 : Декабрь 19, 2005, 10:29 »

if (k != 0)
{
if (k != 1)
{
if (k != 16)
{
...
}
}
}

Заменяется на  if (k != 0 && k !=1 && k!= 16)
или на if (!(k==0 || k==1 || k==16))
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 20.