Re: Sommaire
Nuri, je te dégrossi vite fait une partie du code, pour que tu puisses comprendre .
https://svnweb.tuxfamily.org/filedetail … p;peg=4627
qreal DiagramFolioList::colWidths[8] = {0.05, 0.05, 0.45, 0.10, 0.10, 0.05, 0.10, 0.10};
Création du tableau et largeur de chacune des 8 colonnes.
int cols = 8;//colWidths.size();
fillRow(p, row_rect, diagram_list[i] -> border_and_titleblock.author(),
diagram_list[i] -> title(),
QString::number(diagram_list[i] ->folioIndex()+1),
diagram_list[i] -> border_and_titleblock.folio(),
diagram_list[i] -> border_and_titleblock.machine(),
diagram_list[i] -> border_and_titleblock.locmach(),
diagram_list[i] -> border_and_titleblock.indexrev(),
diagram_list[i] -> border_and_titleblock.date().toString(Qt::SystemLocaleShortDate));
Nos constantes dont on va rechercher les valeurs.
// reduce the font size if the text entry is long
if (origFontMetrics.width(folio) > 0.95*colWidths[0]*row_rect.width())
workingFont.setPointSizeF(origFontSize * 0.95*colWidths[0]*row_rect.width() / origFontMetrics.width(folio));
else
workingFont.setPointSizeF(origFontSize);
qp -> setFont(workingFont);
qp -> drawText(QRectF(x, y, colWidths[0]*row_rect.width(), row_rect.height()), Qt::AlignCenter, folio);
x += colWidths[0]*row_rect.width();
Pour chaque constante tu affiches ou réduit la taille de police, entre les [] tu affectes ta constante à une colonne, ici c'est la constante folio qu'on affiche dans la colonne 1 (car on commence toujours à zéro!)
qp->setFont(QETApp::diagramTextsFont(13));
Taille de police d'origine.
qreal sum = 0;
for (int i = 0; i < 8; i++ )
sum += colWidths[i];
if ( sum < 0.99 || sum > 1.01 ) {
qDebug() << "Invalid input: Column widths do not sum to 1";
return;
}
On ajoute un controle pour que la largeur des colonnes soient compris dans cette fourchette, et donc quelles ne dépassent pas du tableau.
int startDiagram = id * 29;
for (int i = startDiagram; i < startDiagram+29 && i < diagram_list.size(); ++i) {
Chaque tableau contiendra 29 lignes, si le nombre de folios dépassent ce nombre, tu crées autant de tableaux.
--- trunk/sources/qetproject.cpp 2016-08-10 16:48:18 UTC (rev 4621)
+++ trunk/sources/qetproject.cpp 2016-08-11 18:32:08 UTC (rev 4622)
@@ -1039,7 +1039,7 @@
setFolioSheetsQuantity(0);
int diagCount = diagrams().size();
- for (int i = 0; i <= diagCount/58; i++) {
+ for (int i = 0; i <= diagCount/29; i++) {
//create new diagram
Diagram *diagram_folio_list = new DiagramFolioList(this);