Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: Вопросы новичка  (Read 151666 times)

Drummmerz

  • Newbie
  • *
  • Posts: 7
    • View Profile
Re: Вопросы новичка
« Reply #405 on: February 08, 2022, 05:25:04 pm »
И снова здравствуйте :)
Вопрос по использованию QImage/QPixmap в качестве переменной отчёта. Нашёл несколько топиков на эту тему, но так и не понял, как правильно добавлять.
Как это делаю я:
Code: [Select]
class LogoPixmap : public QPixmap
{
public:
    LogoPixmap(QSize size) : QPixmap(size) {
        fill(Qt::white);
        QPaintEvent *pe = new QPaintEvent(rect());
        paintEvent(pe);
        delete pe;
    }

protected:
    void paintEvent(QPaintEvent *event)
    {
        QSvgRenderer svgRenderer(QString(":/images/images/logo.svg"));
        svgRenderer.setAspectRatioMode(Qt::KeepAspectRatio);
        QPainter svgPainter(this);
        svgRenderer.render(&svgPainter, rect());
    }
};

...

    logoPixmap = new LogoPixmap(QSize(150, 50));
    QVariant logoImage(*logoPixmap);
    report->dataManager()->setReportVariable("LogoImage", logoImage);
    logoPixmap->save("logo_pixmap.png"); // проверяю, что изображение нарисовалось

На картинке то, как инициализирую изображение в дизайнере.

Drummmerz

  • Newbie
  • *
  • Posts: 7
    • View Profile
Re: Вопросы новичка
« Reply #406 on: February 08, 2022, 05:28:14 pm »

На картинке то, как инициализирую изображение в дизайнере.

Поправочка, мало заскринил

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 1005
    • View Profile
Re: Вопросы новичка
« Reply #407 on: February 08, 2022, 06:48:43 pm »
Drummmerz, Приветствую!
Свойство variable должно содержать значение LogoImage без $V{}, потому как и так понятно, что это переменная.
« Last Edit: February 08, 2022, 08:20:13 pm by Arin Alex »

leoneii

  • Newbie
  • *
  • Posts: 22
    • View Profile
Re: Вопросы новичка
« Reply #408 on: March 02, 2022, 03:16:59 pm »
здрасте, а как передать путь к бд в источник данных?

Drummmerz

  • Newbie
  • *
  • Posts: 7
    • View Profile
Re: Вопросы новичка
« Reply #409 on: March 03, 2022, 02:10:55 pm »
Здравствуйте.
1) Как сделать так, чтобы андерлайн под лэйаутом не съедался самими итемами? Причем так съедается, что от приближения зависит, насколько андерлайн виден, на скринах показал разницу.

2) Как сделать, чтобы adaptFontToSize одинаково ресайзил? На скрине видно, что строки в одном и том же столбце одинаковой длины, но шрифт иногда где-то больше, где-то меньше. Есть ли возможность функцией самому адаптировать шрифт, потому что, допустим, мне надо, чтобы шрифт везде был одинаковый, а текст в каждом текстовом поле может быть разной длины.

3) Есть ли возможность адаптировать число текстовых полей в лэйауте? Я кидаю в отчёт TableModel, у которого может варьироваться число столбцов. Как можно указать отчёту, что число столбцов переменное, и чтобы он их ужимал под ширину страницы. А если есть возможность, то и поворачивать на определённый угол (из существующих) некоторые поля.

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 1005
    • View Profile
Re: Вопросы новичка
« Reply #410 on: March 05, 2022, 12:32:37 am »
leoneii, Можно использовать переменную

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 1005
    • View Profile
Re: Вопросы новичка
« Reply #411 on: March 05, 2022, 12:57:15 am »
Drummmerz,
Quote
Как сделать так, чтобы андерлайн под лэйаутом не съедался самими итемами?

Можно в меня кинуть шаблон? например на arin_a@bk.ru. По описанию не совсем понятно о чем речь. 

Quote
Как сделать, чтобы adaptFontToSize одинаково ресайзил

Можете сами прописать алгоритм подбора шрифта в зависимости от длинны

Code: [Select]
$S{
var color = LimeReport.color('#DEB887');
var font = LimeReport.font('Times New Roman',26,false,true);
THIS.backgroundColor = color;
THIS.fontColor = LimeReport.color('red');
THIS.font = font;

'Test'}

Quote
Есть ли возможность адаптировать число текстовых полей в лэйауте?
Можно скрывать столбец по определенному условию
Code: [Select]
$S{ if (getVariable("COL_COUNT")==2) THIS.isVisible = false }
Для того, что бы горизонтальная группировка сохраняла размер, layoutType нужно установить в Table



leoneii

  • Newbie
  • *
  • Posts: 22
    • View Profile
Re: Вопросы новичка
« Reply #412 on: March 05, 2022, 10:03:58 am »
leoneii, Можно использовать переменную
не получилось. в свойствах подключения сделал переменную, где путь. Ну да ладно - дефолтконнекшенс работает)

Drummmerz

  • Newbie
  • *
  • Posts: 7
    • View Profile
Re: Вопросы новичка
« Reply #413 on: March 07, 2022, 12:24:57 pm »
Arin Alex,
Quote
Можно в меня кинуть шаблон? например на arin_a@bk.ru. По описанию не совсем понятно о чем речь.

Я отправил, вы пока не отвечаете, так что отпишу ещё сюда, мб в спам попало ;D

Riko

  • Newbie
  • *
  • Posts: 11
    • View Profile
Re: Вопросы новичка
« Reply #414 on: March 11, 2022, 04:00:41 pm »
Всем доброго дня.

Возможно комуто информация окажется полезной, т.к. у меня на понимание этого ушло некоторое время.

Мне потребовалось в качестве источника данных в отчете использовать существующую модель (QSqlTableModel), подключенную к QTableView. Программа, над которой я работаю, включает поддержку нескольких языков UI. Для заполнения заголовков QTableView я использую model()->setHeaderData(..).

Но вот засада - LimeReport для идентификации колонок, в источнике данных, использует названия из заголовка модели. Соответсвенно при смене языка UI меняется и текст в заголовках таблицы, в результате отчет не может сформироваться корректно.

Я не нашел описания этого момента в документации. Путем анализа исходников библиотеки LimeReport выяснилось - первым делом она пытается получить название колонки используя Qt::UserRole, если это название пустое, тогда библиотека берет название из Qt::DisplayRole.

Нехитрый код помогает избежать казусов с переключением языка UI и сменой названий колонок:

for(int i=0; i < model->record().count(); i++) {
    model->setHeaderData(i, Qt::Horizontal, model->headerData(i, Qt::Horizontal, Qt::DisplayRole), Qt::UserRole);
  }

Subst

  • Sr. Member
  • ****
  • Posts: 450
    • View Profile
Re: Вопросы новичка
« Reply #415 on: March 11, 2022, 08:52:15 pm »
Полезно :)
Но с задержкой лет на 5-6 :)
Этот вопрос возникал, кажется, весной 2016 года впервые

Drummmerz

  • Newbie
  • *
  • Posts: 7
    • View Profile
Re: Вопросы новичка
« Reply #416 on: March 17, 2022, 05:22:18 pm »
И снова здравствуйте!
Можно ли в LimeReport динамически создавать элементы в бэндах (в скрипте или из Qt части)? А то у меня монструозные таблицы, на 20+ столбцов и в редакторе для каждого создавать тело, вставлять скрипт и менять поля очень долго, да и не особо гибко, поменяется один столбец где-то в середине, нужно будет идти и руками править.
И можно ли вызвать как-нибудь список элементов в бэнде? Допустим у меня те же 20+ столбцов и я в скрипте им подгоняю размеры, как мне надо, хотелось бы это сделать в цикле, но к ним доступ только прямо по называнию элемента, приходится прописывать всё вручную.

Кстати, Arin Alex, спасибо за скрипт, но это не то, что мне нужно было, посчитать число символов в элементе недостаточно для определения ширины, даже если использовать и в качестве пропорции относительно всей ширины листа, потому что символы занимают место по разному. Я в итоге стал переменной закидывать размеры элементов для произвольного шрифта и уже их в скрипте использовать как аргументы пропорции.

leoneii

  • Newbie
  • *
  • Posts: 22
    • View Profile
Re: Вопросы новичка
« Reply #417 on: March 18, 2022, 02:24:37 pm »
вот это выражение -
...Цена договора составляет $S{currencyFormat($D{summ.SUM(sum)},'RU')} ( $S{num2str($D{summ.SUM(sum)})} ) , и включает в себя...

Толи из-за дефолтконнекшенс, толи из-за виндавс - не работает (на изначальном компе с линупс все ок)

Скобки не нравятся, пишет - ...договора составляет
SyntaxError: Expected token `)' ( SyntaxError: Expected token `)' ) , и включает в себя...

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 1005
    • View Profile
Re: Вопросы новичка
« Reply #418 on: March 18, 2022, 02:46:41 pm »
Drummmerz, На данный момент нет. Можно было бы написать api для фабрик объектов, но на данный момент со свободным временем совсем плохо. 

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 1005
    • View Profile
Re: Вопросы новичка
« Reply #419 on: March 18, 2022, 02:47:45 pm »
leoneii, Можно в меня кинуть lrxml (arin_a@bk.ru) я гляну