Михаиллл
Jan. 2, 2019, 6:06 p.m.

Как QSqlTableModel перевести в QString или распечатать

qt, QSqlTableModel, QString

Здравствуйте.
Как QSqlTableModel перевести в QString или распечатать?

2

Do you like it? Share on social networks!

1
Ruslan Polupan
  • Jan. 2, 2019, 6:28 p.m.

Модель на печать не выводил а вот содержимое QTavleView выводил так.

  1. void MainWindow::slotPrintTavleView(QTableView *tblView)
  2. {
  3. // make a html-dump of table view
  4. QString printStr;
  5. if (tblView) {
  6.  
  7. QTextStream out(&printStr);
  8.  
  9. const int rowCount = tblView->model()->rowCount();
  10. const int columnCount = tblView->model()->columnCount();
  11.  
  12. out << "<html>\n"
  13. "<head>\n"
  14. "<meta Content=\"Text/html; charset=utf-8\">\n"
  15. << QString("<title>%1</title>\n").arg("refTitleName")
  16. << "</head>\n"
  17. "<body bgcolor=#ffffff link=#5000A0>\n"
  18. "<table border=1 cellspacing=0 cellpadding=2>\n";
  19.  
  20. // headers
  21. out << "<tr bgcolor=#f0f0f0>";
  22. for (int column = 0; column < columnCount; column++)
  23. if (!tblView->isColumnHidden(column))
  24. out << QString("<th>%1</th>").arg(tblView->model()->headerData(column, Qt::Horizontal).toString());
  25. out << "</tr>\n";
  26. for (int row = 0; row < rowCount; row++) {
  27. out << "<tr>";
  28. for (int column = 0; column < columnCount; column++) {
  29. if (!tblView->isColumnHidden(column)) {
  30. QString data = tblView->model()->data(tblView->model()->index(row, column)).toString().simplified();
  31.  
  32. out << QString("<td bkcolor=0>%1</td>").arg((!data.isEmpty()) ? data : QString("&nbsp;"));
  33. }
  34. }
  35. out << "</tr>\n";
  36. }
  37. out << "</table>\n"
  38. "</body>\n"
  39. "</html>\n";
  40. }
  41. document = new QTextDocument();
  42.  
  43. document->setHtml(printStr);
  44.  
  45.  
  46.  
  47.  
  48. QPrintPreviewDialog *prDialog = new QPrintPreviewDialog(&printer, this);
  49. connect(prDialog,SIGNAL(paintRequested(QPrinter*)),this,SLOT(printPreviewNeeds(QPrinter*)));
  50.  
  51. prDialog->showMaximized();
  52. prDialog->exec();
  53. }
  54.  
  55. void MainWindow::printPreviewNeeds(QPrinter *)
  56. {
  57. document->print(&printer);
  58. // delete document;
  59. }

    Comments

    Only authorized users can post comments.
    Please, Log in or Sign up
    • Last comments
    • IscanderChe
      April 12, 2025, 5:12 p.m.
      Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
    • AK
      April 1, 2025, 11:41 a.m.
      Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
    • Evgenii Legotckoi
      March 9, 2025, 9:02 p.m.
      К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
    • VP
      March 9, 2025, 4:14 p.m.
      Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
    • ИМ
      Nov. 22, 2024, 9:51 p.m.
      Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…