Переключение на Главную Страницу Страницы: 1 ... 8 9 [10] 11  ОтправитьПечать
Очень популярная тема (более 25 ответов) Тихонько вояю отчетник для unNStudio на Qt.. (число прочтений - 104209 )
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #135 - 23. Ноября 2010 :: 09:18
Печать  
trdm писал(а) 20. Ноября 2010 :: 21:57:
Закрываю проект к чертовой бабушке. Меня достала монструозная ситема рисования текста в Qt. Она не способна выдать нормальное решение. Получается либо монстр, который жрет память тоннами, либо тормозит нещадно. Будь оно все .....

Тогда открой сорцы, может кто-нить позднее допилит
  
Наверх
ICQ  
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #136 - 23. Ноября 2010 :: 09:47
Печать  
Сомневаюсь
  
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #137 - 11. Декабря 2010 :: 14:03
Печать  
Выложил исходники  и бинарик по просьбе ООО "Инфоникс".
Может у них получится довести до ума.
  
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #138 - 11. Декабря 2010 :: 23:29
Печать  
trdm писал(а) 20. Ноября 2010 :: 21:57:
Закрываю проект к чертовой бабушке. Меня достала монструозная ситема рисования текста в Qt. Она не способна выдать нормальное решение. Получается либо монстр, который жрет память тоннами, либо тормозит нещадно. Будь оно все .....

я не ковырялся в исходниках твоих...

ты не пробовал QTextDocument использовать для отрисовки ячеек?
делаешь QTextDocument.setHtml()
а потом QTextDocument.drawContents()
и рисует сразу Rich-текст
и повернуть наверное можно (я до этого не дошел еще)

вроде ничего работает... одна страница PDF генерится в полсекунды
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #139 - 29. Декабря 2010 :: 13:49
Печать  
villager писал(а) 11. Декабря 2010 :: 23:29:
ты не пробовал QTextDocument использовать для отрисовки ячеек?

Это мне что для каждой ячейки QTextDocument хранить?
Ты хоть головой подумал? Скока это:
Код
Выбрать все
class Q_AUTOTEST_EXPORT QTextDocumentPrivate : public QObjectPrivate
.................
    QString text;
    uint unreachableCharacterCount;

    QVector<QTextUndoCommand> undoStack;
    bool undoEnabled;
    int undoState;
    // position in undo stack of the last setModified(false) call
    int modifiedState;
    bool modified;

    int editBlock;
    int docChangeFrom;
    int docChangeOldLength;
    int docChangeLength;
    bool framesDirty;

    QTextFormatCollection formats;
    mutable QTextFrame *rtFrame;
    QAbstractTextDocumentLayout *lout;
    FragmentMap fragments;
    BlockMap blocks;
    int initialBlockCharFormatIndex;

    QList<QTextCursorPrivate*> cursors;
    QList<QTextCursorPrivate*> changedCursors;
    QMap<int, QTextObject *> objects;
    QMap<QUrl, QVariant> resources;
    QMap<QUrl, QVariant> cachedResources;
    QString defaultStyleSheet;

    QTextOption defaultTextOption;
    int lastBlockCount;

public:
    QCss::StyleSheet parsedDefaultStyleSheet;
    int maximumBlockCount;
    bool inContentsChange;
    QSizeF pageSize;
    QString title;
};
 


весит в байтах???
  
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #140 - 29. Декабря 2010 :: 13:57
Печать  
Я много чего перепробовал:
кеширование изображений у ячейки = не смог помороть "эффект негатива" при выводе на печать.
Попробовал рисовать winApi - получил непонятные вылеты во время длительной работы.
Надо бы попробовать QPainterPath как вариант - кешировать отрисованный уже текст там.
  
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #141 - 29. Декабря 2010 :: 19:38
Печать  
trdm писал(а) 29. Декабря 2010 :: 13:49:
Это мне что для каждой ячейки QTextDocument хранить?

а зачем хранить?
отрисовал и выбросил
я сделал на основе QTableView просмотрщик html с возможностью фиксирования строк/колонок
через делегата запросто рисуется на лету
а храню только текст ячеек
  
Наверх
 
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #142 - 29. Декабря 2010 :: 20:14
Печать  
Код
Выбрать все
class zzHtmlTableViewDelegate(QItemDelegate):
    def __init__(self, parent):
        QItemDelegate.__init__(self, parent)
        self.parent = parent
    def paint(self, painter, option, index):
            if not index.isValid(): return
            if option.rect.size().width()<0: return
            doc=QTextDocument()
            doc.setHtml(index.model().data(index, Qt.DisplayRole).toString())
            pix=QPixmap(option.rect.size())
            p=QPainter(pix)
            p.setPen(Qt.NoPen)
            p.setBrush(option.palette.highlight())
            p.setBrush(option.palette.base())
            if option.state & QStyle.State_Selected:
                p.setBrush(option.palette.highlight())
            else:
                p.setBrush(option.palette.base())
            p.fillRect (pix.rect(), p.brush())
            doc.drawContents(p, QRectF(pix.rect()))
            painter.drawPixmap(option.rect.x(), option.rect.y(), pix)
            p.end() 

  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #143 - 29. Декабря 2010 :: 23:43
Печать  
villager писал(а) 29. Декабря 2010 :: 19:38:
trdm писал(а) 29. Декабря 2010 :: 13:49:
Это мне что для каждой ячейки QTextDocument хранить?

а зачем хранить?
отрисовал и выбросил
я сделал на основе QTableView просмотрщик html с возможностью фиксирования строк/колонок
через делегата запросто рисуется на лету
а храню только текст ячеек

А смысл какой?
Сам затык в скорости рисовании. А ты еще добавляешь тормоза для создания документа и расход памяти на его фитюльки.
Совет минимум - бесполезен..
  
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #144 - 30. Декабря 2010 :: 10:49
Печать  
trdm писал(а) 29. Декабря 2010 :: 23:43:
villager писал(а) 29. Декабря 2010 :: 19:38:
trdm писал(а) 29. Декабря 2010 :: 13:49:
Это мне что для каждой ячейки QTextDocument хранить?

а зачем хранить?
отрисовал и выбросил
я сделал на основе QTableView просмотрщик html с возможностью фиксирования строк/колонок
через делегата запросто рисуется на лету
а храню только текст ячеек

А смысл какой?
Сам затык в скорости рисовании. А ты еще добавляешь тормоза для создания документа и расход памяти на его фитюльки.
Совет минимум - бесполезен..

никаких затыков, как ни странно Улыбка
все летает
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #145 - 30. Декабря 2010 :: 12:17
Печать  
villager писал(а) 30. Декабря 2010 :: 10:49:
никаких затыков, как ни странно Улыбка
все летает

Даже разрабы Qt признали проблему и предложили несколько решений, а у него все летает...
Подозрительно...
  
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #146 - 31. Декабря 2010 :: 08:06
Печать  
кажется ключевое слово здесь QTableView
он сам знает что и где рисовать, при скроллинге не перерисовывает, а сдвигает участки экрана
можно вставить отладочную печать в model().data() - будет видно обращение к данным
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #147 - 30. Ноября 2011 :: 17:02
Печать  
Реализован механизм использования шаблонов и вывода секций шаблона в целевой документ:
  
Наверх
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #148 - 01. Декабря 2011 :: 07:54
Печать  
а как этим воспользоваться?
  
Наверх
wwwICQ  
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тихонько вояю отчетник для unNStudio на Qt..
Ответ #149 - 01. Декабря 2011 :: 09:50
Печать  
Anatol писал(а) 01. Декабря 2011 :: 07:54:
а как этим воспользоваться?

чуть попозже выложу сорцы и демку.
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 8 9 [10] 11 
ОтправитьПечать