暫無描述

class_q_c_p_layout_grid.tex 32KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. \hypertarget{class_q_c_p_layout_grid}{}\section{Q\+C\+P\+Layout\+Grid Class Reference}
  2. \label{class_q_c_p_layout_grid}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  3. A layout that arranges child elements in a grid.
  4. Inheritance diagram for Q\+C\+P\+Layout\+Grid\+:\begin{figure}[H]
  5. \begin{center}
  6. \leavevmode
  7. \includegraphics[height=6.000000cm]{class_q_c_p_layout_grid}
  8. \end{center}
  9. \end{figure}
  10. \subsection*{Public Member Functions}
  11. \begin{DoxyCompactItemize}
  12. \item
  13. \hyperlink{class_q_c_p_layout_grid_ab2a4c1587dc8aed4c41c509c8d8d2a64}{Q\+C\+P\+Layout\+Grid} ()
  14. \item
  15. int \hyperlink{class_q_c_p_layout_grid_af8e6c7a05864ebe610c87756c7b9079c}{row\+Count} () const
  16. \item
  17. int \hyperlink{class_q_c_p_layout_grid_ac39074eafd148b82d0762090f258189e}{column\+Count} () const
  18. \item
  19. \hypertarget{class_q_c_p_layout_grid_a39bd7994d00687d1b9defef6f1bda835}{}Q\+List$<$ double $>$ {\bfseries column\+Stretch\+Factors} () const \label{class_q_c_p_layout_grid_a39bd7994d00687d1b9defef6f1bda835}
  20. \item
  21. \hypertarget{class_q_c_p_layout_grid_a3744496abf73c8e3b464181d63bb20a7}{}Q\+List$<$ double $>$ {\bfseries row\+Stretch\+Factors} () const \label{class_q_c_p_layout_grid_a3744496abf73c8e3b464181d63bb20a7}
  22. \item
  23. \hypertarget{class_q_c_p_layout_grid_a3de19753fdca81194458cb15156f7315}{}int {\bfseries column\+Spacing} () const \label{class_q_c_p_layout_grid_a3de19753fdca81194458cb15156f7315}
  24. \item
  25. \hypertarget{class_q_c_p_layout_grid_abccdd33c1b284feb6df90fa02f23d9a3}{}int {\bfseries row\+Spacing} () const \label{class_q_c_p_layout_grid_abccdd33c1b284feb6df90fa02f23d9a3}
  26. \item
  27. void \hyperlink{class_q_c_p_layout_grid_ae38f31a71687b9d7ee3104852528fb50}{set\+Column\+Stretch\+Factor} (int column, double factor)
  28. \item
  29. void \hyperlink{class_q_c_p_layout_grid_a6c2591d1a7e2534ce036989543b49e57}{set\+Column\+Stretch\+Factors} (const Q\+List$<$ double $>$ \&factors)
  30. \item
  31. void \hyperlink{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}{set\+Row\+Stretch\+Factor} (int row, double factor)
  32. \item
  33. void \hyperlink{class_q_c_p_layout_grid_a200b45f9c908f96ebadaa3c8d87a2782}{set\+Row\+Stretch\+Factors} (const Q\+List$<$ double $>$ \&factors)
  34. \item
  35. void \hyperlink{class_q_c_p_layout_grid_a3a49272aba32bb0fddc3bb2a45a3dba0}{set\+Column\+Spacing} (int pixels)
  36. \item
  37. void \hyperlink{class_q_c_p_layout_grid_aaef2cd2d456197ee06a208793678e436}{set\+Row\+Spacing} (int pixels)
  38. \item
  39. \hypertarget{class_q_c_p_layout_grid_a07f8dd7d3d61d7345026621d446042a4}{}virtual void {\bfseries update\+Layout} ()\label{class_q_c_p_layout_grid_a07f8dd7d3d61d7345026621d446042a4}
  40. \item
  41. virtual int \hyperlink{class_q_c_p_layout_grid_aa682b1d36660478f665bab3c64e956a9}{element\+Count} () const
  42. \item
  43. virtual \hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element} $\ast$ \hyperlink{class_q_c_p_layout_grid_a26849ee5c47b4c940e8d65e8462f1065}{element\+At} (int index) const
  44. \item
  45. virtual \hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element} $\ast$ \hyperlink{class_q_c_p_layout_grid_acc1277394ff8a6432e111ff9463e6375}{take\+At} (int index)
  46. \item
  47. virtual bool \hyperlink{class_q_c_p_layout_grid_a666a9fe9e92054436f9b66eba25cca0c}{take} (\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element} $\ast$\hyperlink{class_q_c_p_layout_grid_a525f25e6ba43ee228151d074251b4e6a}{element})
  48. \item
  49. virtual Q\+List$<$ \hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element} $\ast$ $>$ \hyperlink{class_q_c_p_layout_grid_ae9e24e01552f6667b6d05b12a54a4caa}{elements} (bool recursive) const
  50. \item
  51. virtual void \hyperlink{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}{simplify} ()
  52. \item
  53. virtual Q\+Size \hyperlink{class_q_c_p_layout_grid_a67aae235fb4dd9a479aafe07462ef9ee}{minimum\+Size\+Hint} () const
  54. \item
  55. virtual Q\+Size \hyperlink{class_q_c_p_layout_grid_a1ec4bf5914900a51829a7919f74aa58c}{maximum\+Size\+Hint} () const
  56. \item
  57. \hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element} $\ast$ \hyperlink{class_q_c_p_layout_grid_a525f25e6ba43ee228151d074251b4e6a}{element} (int row, int column) const
  58. \item
  59. bool \hyperlink{class_q_c_p_layout_grid_adff1a2ca691ed83d2d24a4cd1fe17012}{add\+Element} (int row, int column, \hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element} $\ast$\hyperlink{class_q_c_p_layout_grid_a525f25e6ba43ee228151d074251b4e6a}{element})
  60. \item
  61. bool \hyperlink{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}{has\+Element} (int row, int column)
  62. \item
  63. void \hyperlink{class_q_c_p_layout_grid_a886c0dcbabd51a45da399e044552b685}{expand\+To} (int new\+Row\+Count, int new\+Column\+Count)
  64. \item
  65. void \hyperlink{class_q_c_p_layout_grid_a48af3dd7c3a653d9c3d7dd99bd02e838}{insert\+Row} (int new\+Index)
  66. \item
  67. void \hyperlink{class_q_c_p_layout_grid_a1e880a321dbe8b43b471ccd764433dc4}{insert\+Column} (int new\+Index)
  68. \end{DoxyCompactItemize}
  69. \subsection*{Protected Member Functions}
  70. \begin{DoxyCompactItemize}
  71. \item
  72. \hypertarget{class_q_c_p_layout_grid_ac645fb9b1c4257b08a9f09dee10b9b3f}{}void {\bfseries get\+Minimum\+Row\+Col\+Sizes} (Q\+Vector$<$ int $>$ $\ast$min\+Col\+Widths, Q\+Vector$<$ int $>$ $\ast$min\+Row\+Heights) const \label{class_q_c_p_layout_grid_ac645fb9b1c4257b08a9f09dee10b9b3f}
  73. \item
  74. \hypertarget{class_q_c_p_layout_grid_af348d903e3b8bc416f1fe1b8125d1173}{}void {\bfseries get\+Maximum\+Row\+Col\+Sizes} (Q\+Vector$<$ int $>$ $\ast$max\+Col\+Widths, Q\+Vector$<$ int $>$ $\ast$max\+Row\+Heights) const \label{class_q_c_p_layout_grid_af348d903e3b8bc416f1fe1b8125d1173}
  75. \end{DoxyCompactItemize}
  76. \subsection*{Protected Attributes}
  77. \begin{DoxyCompactItemize}
  78. \item
  79. \hypertarget{class_q_c_p_layout_grid_a3577d3855bf8ad20ef9079291a49f397}{}Q\+List$<$ Q\+List$<$ \hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element} $\ast$ $>$ $>$ {\bfseries m\+Elements}\label{class_q_c_p_layout_grid_a3577d3855bf8ad20ef9079291a49f397}
  80. \item
  81. \hypertarget{class_q_c_p_layout_grid_ac6aabe62339f94f18b9f8adab94b1840}{}Q\+List$<$ double $>$ {\bfseries m\+Column\+Stretch\+Factors}\label{class_q_c_p_layout_grid_ac6aabe62339f94f18b9f8adab94b1840}
  82. \item
  83. \hypertarget{class_q_c_p_layout_grid_a36c85a7eaf342680fb9b8a4977486f16}{}Q\+List$<$ double $>$ {\bfseries m\+Row\+Stretch\+Factors}\label{class_q_c_p_layout_grid_a36c85a7eaf342680fb9b8a4977486f16}
  84. \item
  85. \hypertarget{class_q_c_p_layout_grid_ae9ac48f0791be07ead0a96dbd5622770}{}int {\bfseries m\+Column\+Spacing}\label{class_q_c_p_layout_grid_ae9ac48f0791be07ead0a96dbd5622770}
  86. \item
  87. \hypertarget{class_q_c_p_layout_grid_a8b67f183f4645739cc4c794d75843b40}{}int {\bfseries m\+Row\+Spacing}\label{class_q_c_p_layout_grid_a8b67f183f4645739cc4c794d75843b40}
  88. \end{DoxyCompactItemize}
  89. \subsection{Detailed Description}
  90. A layout that arranges child elements in a grid.
  91. Elements are laid out in a grid with configurable stretch factors (\hyperlink{class_q_c_p_layout_grid_ae38f31a71687b9d7ee3104852528fb50}{set\+Column\+Stretch\+Factor}, \hyperlink{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}{set\+Row\+Stretch\+Factor}) and spacing (\hyperlink{class_q_c_p_layout_grid_a3a49272aba32bb0fddc3bb2a45a3dba0}{set\+Column\+Spacing}, \hyperlink{class_q_c_p_layout_grid_aaef2cd2d456197ee06a208793678e436}{set\+Row\+Spacing}).
  92. Elements can be added to cells via \hyperlink{class_q_c_p_layout_grid_adff1a2ca691ed83d2d24a4cd1fe17012}{add\+Element}. The grid is expanded if the specified row or column doesn\textquotesingle{}t exist yet. Whether a cell contains a valid layout element can be checked with \hyperlink{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}{has\+Element}, that element can be retrieved with \hyperlink{class_q_c_p_layout_grid_a525f25e6ba43ee228151d074251b4e6a}{element}. If rows and columns that only have empty cells shall be removed, call \hyperlink{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}{simplify}. Removal of elements is either done by just adding the element to a different layout or by using the \hyperlink{class_q_c_p_layout}{Q\+C\+P\+Layout} interface \hyperlink{class_q_c_p_layout_grid_a666a9fe9e92054436f9b66eba25cca0c}{take} or \hyperlink{class_q_c_p_layout_a6c58f537d8086f352576ab7c5b15d0bc}{remove}.
  93. Row and column insertion can be performed with \hyperlink{class_q_c_p_layout_grid_a48af3dd7c3a653d9c3d7dd99bd02e838}{insert\+Row} and \hyperlink{class_q_c_p_layout_grid_a1e880a321dbe8b43b471ccd764433dc4}{insert\+Column}.
  94. \subsection{Constructor \& Destructor Documentation}
  95. \hypertarget{class_q_c_p_layout_grid_ab2a4c1587dc8aed4c41c509c8d8d2a64}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  96. \index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  97. \subsubsection[{Q\+C\+P\+Layout\+Grid}]{\setlength{\rightskip}{0pt plus 5cm}Q\+C\+P\+Layout\+Grid\+::\+Q\+C\+P\+Layout\+Grid (
  98. \begin{DoxyParamCaption}
  99. {}
  100. \end{DoxyParamCaption}
  101. )\hspace{0.3cm}{\ttfamily [explicit]}}\label{class_q_c_p_layout_grid_ab2a4c1587dc8aed4c41c509c8d8d2a64}
  102. Creates an instance of \hyperlink{class_q_c_p_layout_grid}{Q\+C\+P\+Layout\+Grid} and sets default values.
  103. \subsection{Member Function Documentation}
  104. \hypertarget{class_q_c_p_layout_grid_adff1a2ca691ed83d2d24a4cd1fe17012}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!add\+Element@{add\+Element}}
  105. \index{add\+Element@{add\+Element}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  106. \subsubsection[{add\+Element}]{\setlength{\rightskip}{0pt plus 5cm}bool Q\+C\+P\+Layout\+Grid\+::add\+Element (
  107. \begin{DoxyParamCaption}
  108. \item[{int}]{row, }
  109. \item[{int}]{column, }
  110. \item[{{\bf Q\+C\+P\+Layout\+Element} $\ast$}]{element}
  111. \end{DoxyParamCaption}
  112. )}\label{class_q_c_p_layout_grid_adff1a2ca691ed83d2d24a4cd1fe17012}
  113. Adds the {\itshape element} to cell with {\itshape row} and {\itshape column}. If {\itshape element} is already in a layout, it is first removed from there. If {\itshape row} or {\itshape column} don\textquotesingle{}t exist yet, the layout is expanded accordingly.
  114. Returns true if the element was added successfully, i.\+e. if the cell at {\itshape row} and {\itshape column} didn\textquotesingle{}t already have an element.
  115. \begin{DoxySeeAlso}{See also}
  116. \hyperlink{class_q_c_p_layout_grid_a525f25e6ba43ee228151d074251b4e6a}{element}, \hyperlink{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}{has\+Element}, \hyperlink{class_q_c_p_layout_grid_a666a9fe9e92054436f9b66eba25cca0c}{take}, \hyperlink{class_q_c_p_layout_a6c58f537d8086f352576ab7c5b15d0bc}{remove}
  117. \end{DoxySeeAlso}
  118. \hypertarget{class_q_c_p_layout_grid_ac39074eafd148b82d0762090f258189e}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!column\+Count@{column\+Count}}
  119. \index{column\+Count@{column\+Count}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  120. \subsubsection[{column\+Count}]{\setlength{\rightskip}{0pt plus 5cm}int Q\+C\+P\+Layout\+Grid\+::column\+Count (
  121. \begin{DoxyParamCaption}
  122. {}
  123. \end{DoxyParamCaption}
  124. ) const}\label{class_q_c_p_layout_grid_ac39074eafd148b82d0762090f258189e}
  125. Returns the number of columns in the layout.
  126. \begin{DoxySeeAlso}{See also}
  127. \hyperlink{class_q_c_p_layout_grid_af8e6c7a05864ebe610c87756c7b9079c}{row\+Count}
  128. \end{DoxySeeAlso}
  129. \hypertarget{class_q_c_p_layout_grid_a525f25e6ba43ee228151d074251b4e6a}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!element@{element}}
  130. \index{element@{element}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  131. \subsubsection[{element}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Q\+C\+P\+Layout\+Element} $\ast$ Q\+C\+P\+Layout\+Grid\+::element (
  132. \begin{DoxyParamCaption}
  133. \item[{int}]{row, }
  134. \item[{int}]{column}
  135. \end{DoxyParamCaption}
  136. ) const}\label{class_q_c_p_layout_grid_a525f25e6ba43ee228151d074251b4e6a}
  137. Returns the element in the cell in {\itshape row} and {\itshape column}.
  138. Returns 0 if either the row/column is invalid or if the cell is empty. In those cases, a q\+Debug message is printed. To check whether a cell exists and isn\textquotesingle{}t empty, use \hyperlink{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}{has\+Element}.
  139. \begin{DoxySeeAlso}{See also}
  140. \hyperlink{class_q_c_p_layout_grid_adff1a2ca691ed83d2d24a4cd1fe17012}{add\+Element}, \hyperlink{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}{has\+Element}
  141. \end{DoxySeeAlso}
  142. \hypertarget{class_q_c_p_layout_grid_a26849ee5c47b4c940e8d65e8462f1065}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!element\+At@{element\+At}}
  143. \index{element\+At@{element\+At}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  144. \subsubsection[{element\+At}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Q\+C\+P\+Layout\+Element} $\ast$ Q\+C\+P\+Layout\+Grid\+::element\+At (
  145. \begin{DoxyParamCaption}
  146. \item[{int}]{index}
  147. \end{DoxyParamCaption}
  148. ) const\hspace{0.3cm}{\ttfamily [virtual]}}\label{class_q_c_p_layout_grid_a26849ee5c47b4c940e8d65e8462f1065}
  149. Returns the element in the cell with the given {\itshape index}. If {\itshape index} is invalid, returns 0.
  150. Note that even if {\itshape index} is valid, the respective cell may be empty in some layouts (e.\+g. \hyperlink{class_q_c_p_layout_grid}{Q\+C\+P\+Layout\+Grid}), so this function may return 0 in those cases. You may use this function to check whether a cell is empty or not.
  151. \begin{DoxySeeAlso}{See also}
  152. \hyperlink{class_q_c_p_layout_grid_ae9e24e01552f6667b6d05b12a54a4caa}{elements}, \hyperlink{class_q_c_p_layout_grid_aa682b1d36660478f665bab3c64e956a9}{element\+Count}, \hyperlink{class_q_c_p_layout_grid_acc1277394ff8a6432e111ff9463e6375}{take\+At}
  153. \end{DoxySeeAlso}
  154. Implements \hyperlink{class_q_c_p_layout_afa73ca7d859f8a3ee5c73c9b353d2a56}{Q\+C\+P\+Layout}.
  155. \hypertarget{class_q_c_p_layout_grid_aa682b1d36660478f665bab3c64e956a9}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!element\+Count@{element\+Count}}
  156. \index{element\+Count@{element\+Count}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  157. \subsubsection[{element\+Count}]{\setlength{\rightskip}{0pt plus 5cm}int Q\+C\+P\+Layout\+Grid\+::element\+Count (
  158. \begin{DoxyParamCaption}
  159. {}
  160. \end{DoxyParamCaption}
  161. ) const\hspace{0.3cm}{\ttfamily [virtual]}}\label{class_q_c_p_layout_grid_aa682b1d36660478f665bab3c64e956a9}
  162. Returns the number of elements/cells in the layout.
  163. \begin{DoxySeeAlso}{See also}
  164. \hyperlink{class_q_c_p_layout_grid_ae9e24e01552f6667b6d05b12a54a4caa}{elements}, \hyperlink{class_q_c_p_layout_grid_a26849ee5c47b4c940e8d65e8462f1065}{element\+At}
  165. \end{DoxySeeAlso}
  166. Implements \hyperlink{class_q_c_p_layout_a39d3e9ef5d9b82ab1885ba1cb9597e56}{Q\+C\+P\+Layout}.
  167. \hypertarget{class_q_c_p_layout_grid_ae9e24e01552f6667b6d05b12a54a4caa}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!elements@{elements}}
  168. \index{elements@{elements}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  169. \subsubsection[{elements}]{\setlength{\rightskip}{0pt plus 5cm}Q\+List$<$ {\bf Q\+C\+P\+Layout\+Element} $\ast$ $>$ Q\+C\+P\+Layout\+Grid\+::elements (
  170. \begin{DoxyParamCaption}
  171. \item[{bool}]{recursive}
  172. \end{DoxyParamCaption}
  173. ) const\hspace{0.3cm}{\ttfamily [virtual]}}\label{class_q_c_p_layout_grid_ae9e24e01552f6667b6d05b12a54a4caa}
  174. Returns a list of all child elements in this layout element. If {\itshape recursive} is true, all sub-\/child elements are included in the list, too.
  175. Note that there may be entries with value 0 in the returned list. (For example, \hyperlink{class_q_c_p_layout_grid}{Q\+C\+P\+Layout\+Grid} may have empty cells which yield 0 at the respective index.)
  176. Reimplemented from \hyperlink{class_q_c_p_layout_a51fe2675b53e829130b229bc1f7b0f99}{Q\+C\+P\+Layout}.
  177. \hypertarget{class_q_c_p_layout_grid_a886c0dcbabd51a45da399e044552b685}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!expand\+To@{expand\+To}}
  178. \index{expand\+To@{expand\+To}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  179. \subsubsection[{expand\+To}]{\setlength{\rightskip}{0pt plus 5cm}void Q\+C\+P\+Layout\+Grid\+::expand\+To (
  180. \begin{DoxyParamCaption}
  181. \item[{int}]{new\+Row\+Count, }
  182. \item[{int}]{new\+Column\+Count}
  183. \end{DoxyParamCaption}
  184. )}\label{class_q_c_p_layout_grid_a886c0dcbabd51a45da399e044552b685}
  185. Expands the layout to have {\itshape new\+Row\+Count} rows and {\itshape new\+Column\+Count} columns. So the last valid row index will be {\itshape new\+Row\+Count-\/1}, the last valid column index will be {\itshape new\+Column\+Count-\/1}.
  186. If the current column/row count is already larger or equal to {\itshape new\+Column\+Count/{\itshape new\+Row\+Count},} this function does nothing in that dimension.
  187. Newly created cells are empty, new rows and columns have the stretch factor 1.
  188. Note that upon a call to \hyperlink{class_q_c_p_layout_grid_adff1a2ca691ed83d2d24a4cd1fe17012}{add\+Element}, the layout is expanded automatically to contain the specified row and column, using this function.
  189. \begin{DoxySeeAlso}{See also}
  190. \hyperlink{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}{simplify}
  191. \end{DoxySeeAlso}
  192. \hypertarget{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!has\+Element@{has\+Element}}
  193. \index{has\+Element@{has\+Element}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  194. \subsubsection[{has\+Element}]{\setlength{\rightskip}{0pt plus 5cm}bool Q\+C\+P\+Layout\+Grid\+::has\+Element (
  195. \begin{DoxyParamCaption}
  196. \item[{int}]{row, }
  197. \item[{int}]{column}
  198. \end{DoxyParamCaption}
  199. )}\label{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}
  200. Returns whether the cell at {\itshape row} and {\itshape column} exists and contains a valid element, i.\+e. isn\textquotesingle{}t empty.
  201. \begin{DoxySeeAlso}{See also}
  202. \hyperlink{class_q_c_p_layout_grid_a525f25e6ba43ee228151d074251b4e6a}{element}
  203. \end{DoxySeeAlso}
  204. \hypertarget{class_q_c_p_layout_grid_a1e880a321dbe8b43b471ccd764433dc4}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!insert\+Column@{insert\+Column}}
  205. \index{insert\+Column@{insert\+Column}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  206. \subsubsection[{insert\+Column}]{\setlength{\rightskip}{0pt plus 5cm}void Q\+C\+P\+Layout\+Grid\+::insert\+Column (
  207. \begin{DoxyParamCaption}
  208. \item[{int}]{new\+Index}
  209. \end{DoxyParamCaption}
  210. )}\label{class_q_c_p_layout_grid_a1e880a321dbe8b43b471ccd764433dc4}
  211. Inserts a new column with empty cells at the column index {\itshape new\+Index}. Valid values for {\itshape new\+Index} range from 0 (inserts a row at the left) to {\itshape row\+Count} (appends a row at the right).
  212. \begin{DoxySeeAlso}{See also}
  213. \hyperlink{class_q_c_p_layout_grid_a48af3dd7c3a653d9c3d7dd99bd02e838}{insert\+Row}
  214. \end{DoxySeeAlso}
  215. \hypertarget{class_q_c_p_layout_grid_a48af3dd7c3a653d9c3d7dd99bd02e838}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!insert\+Row@{insert\+Row}}
  216. \index{insert\+Row@{insert\+Row}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  217. \subsubsection[{insert\+Row}]{\setlength{\rightskip}{0pt plus 5cm}void Q\+C\+P\+Layout\+Grid\+::insert\+Row (
  218. \begin{DoxyParamCaption}
  219. \item[{int}]{new\+Index}
  220. \end{DoxyParamCaption}
  221. )}\label{class_q_c_p_layout_grid_a48af3dd7c3a653d9c3d7dd99bd02e838}
  222. Inserts a new row with empty cells at the row index {\itshape new\+Index}. Valid values for {\itshape new\+Index} range from 0 (inserts a row at the top) to {\itshape row\+Count} (appends a row at the bottom).
  223. \begin{DoxySeeAlso}{See also}
  224. \hyperlink{class_q_c_p_layout_grid_a1e880a321dbe8b43b471ccd764433dc4}{insert\+Column}
  225. \end{DoxySeeAlso}
  226. \hypertarget{class_q_c_p_layout_grid_a1ec4bf5914900a51829a7919f74aa58c}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!maximum\+Size\+Hint@{maximum\+Size\+Hint}}
  227. \index{maximum\+Size\+Hint@{maximum\+Size\+Hint}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  228. \subsubsection[{maximum\+Size\+Hint}]{\setlength{\rightskip}{0pt plus 5cm}Q\+Size Q\+C\+P\+Layout\+Grid\+::maximum\+Size\+Hint (
  229. \begin{DoxyParamCaption}
  230. {}
  231. \end{DoxyParamCaption}
  232. ) const\hspace{0.3cm}{\ttfamily [virtual]}}\label{class_q_c_p_layout_grid_a1ec4bf5914900a51829a7919f74aa58c}
  233. Returns the maximum size this layout element (the inner \hyperlink{class_q_c_p_layout_element_affdfea003469aac3d0fac5f4e06171bc}{rect}) may be expanded to.
  234. if a maximum size (\hyperlink{class_q_c_p_layout_element_a74eb5280a737ab44833d506db65efd95}{set\+Maximum\+Size}) was not set manually, parent layouts consult this function to determine the maximum allowed size of this layout element. (A manual maximum size is considered set if it is smaller than Qt\textquotesingle{}s Q\+W\+I\+D\+G\+E\+T\+S\+I\+Z\+E\+\_\+\+M\+A\+X.)
  235. Reimplemented from \hyperlink{class_q_c_p_layout_element_adbd3a00fec44c977150c6be7329eb801}{Q\+C\+P\+Layout\+Element}.
  236. \hypertarget{class_q_c_p_layout_grid_a67aae235fb4dd9a479aafe07462ef9ee}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!minimum\+Size\+Hint@{minimum\+Size\+Hint}}
  237. \index{minimum\+Size\+Hint@{minimum\+Size\+Hint}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  238. \subsubsection[{minimum\+Size\+Hint}]{\setlength{\rightskip}{0pt plus 5cm}Q\+Size Q\+C\+P\+Layout\+Grid\+::minimum\+Size\+Hint (
  239. \begin{DoxyParamCaption}
  240. {}
  241. \end{DoxyParamCaption}
  242. ) const\hspace{0.3cm}{\ttfamily [virtual]}}\label{class_q_c_p_layout_grid_a67aae235fb4dd9a479aafe07462ef9ee}
  243. Returns the minimum size this layout element (the inner \hyperlink{class_q_c_p_layout_element_affdfea003469aac3d0fac5f4e06171bc}{rect}) may be compressed to.
  244. if a minimum size (\hyperlink{class_q_c_p_layout_element_a5dd29a3c8bc88440c97c06b67be7886b}{set\+Minimum\+Size}) was not set manually, parent layouts consult this function to determine the minimum allowed size of this layout element. (A manual minimum size is considered set if it is non-\/zero.)
  245. Reimplemented from \hyperlink{class_q_c_p_layout_element_aebe14fb71f858c0f98caf8d342a9864a}{Q\+C\+P\+Layout\+Element}.
  246. \hypertarget{class_q_c_p_layout_grid_af8e6c7a05864ebe610c87756c7b9079c}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!row\+Count@{row\+Count}}
  247. \index{row\+Count@{row\+Count}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  248. \subsubsection[{row\+Count}]{\setlength{\rightskip}{0pt plus 5cm}int Q\+C\+P\+Layout\+Grid\+::row\+Count (
  249. \begin{DoxyParamCaption}
  250. {}
  251. \end{DoxyParamCaption}
  252. ) const}\label{class_q_c_p_layout_grid_af8e6c7a05864ebe610c87756c7b9079c}
  253. Returns the number of rows in the layout.
  254. \begin{DoxySeeAlso}{See also}
  255. \hyperlink{class_q_c_p_layout_grid_ac39074eafd148b82d0762090f258189e}{column\+Count}
  256. \end{DoxySeeAlso}
  257. \hypertarget{class_q_c_p_layout_grid_a3a49272aba32bb0fddc3bb2a45a3dba0}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!set\+Column\+Spacing@{set\+Column\+Spacing}}
  258. \index{set\+Column\+Spacing@{set\+Column\+Spacing}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  259. \subsubsection[{set\+Column\+Spacing}]{\setlength{\rightskip}{0pt plus 5cm}void Q\+C\+P\+Layout\+Grid\+::set\+Column\+Spacing (
  260. \begin{DoxyParamCaption}
  261. \item[{int}]{pixels}
  262. \end{DoxyParamCaption}
  263. )}\label{class_q_c_p_layout_grid_a3a49272aba32bb0fddc3bb2a45a3dba0}
  264. Sets the gap that is left blank between columns to {\itshape pixels}.
  265. \begin{DoxySeeAlso}{See also}
  266. \hyperlink{class_q_c_p_layout_grid_aaef2cd2d456197ee06a208793678e436}{set\+Row\+Spacing}
  267. \end{DoxySeeAlso}
  268. \hypertarget{class_q_c_p_layout_grid_ae38f31a71687b9d7ee3104852528fb50}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!set\+Column\+Stretch\+Factor@{set\+Column\+Stretch\+Factor}}
  269. \index{set\+Column\+Stretch\+Factor@{set\+Column\+Stretch\+Factor}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  270. \subsubsection[{set\+Column\+Stretch\+Factor}]{\setlength{\rightskip}{0pt plus 5cm}void Q\+C\+P\+Layout\+Grid\+::set\+Column\+Stretch\+Factor (
  271. \begin{DoxyParamCaption}
  272. \item[{int}]{column, }
  273. \item[{double}]{factor}
  274. \end{DoxyParamCaption}
  275. )}\label{class_q_c_p_layout_grid_ae38f31a71687b9d7ee3104852528fb50}
  276. Sets the stretch {\itshape factor} of {\itshape column}.
  277. Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond their minimum and maximum widths/heights (\hyperlink{class_q_c_p_layout_element_a5dd29a3c8bc88440c97c06b67be7886b}{Q\+C\+P\+Layout\+Element\+::set\+Minimum\+Size}, \hyperlink{class_q_c_p_layout_element_a74eb5280a737ab44833d506db65efd95}{Q\+C\+P\+Layout\+Element\+::set\+Maximum\+Size}), regardless of the stretch factor.
  278. The default stretch factor of newly created rows/columns is 1.
  279. \begin{DoxySeeAlso}{See also}
  280. \hyperlink{class_q_c_p_layout_grid_a6c2591d1a7e2534ce036989543b49e57}{set\+Column\+Stretch\+Factors}, \hyperlink{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}{set\+Row\+Stretch\+Factor}
  281. \end{DoxySeeAlso}
  282. \hypertarget{class_q_c_p_layout_grid_a6c2591d1a7e2534ce036989543b49e57}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!set\+Column\+Stretch\+Factors@{set\+Column\+Stretch\+Factors}}
  283. \index{set\+Column\+Stretch\+Factors@{set\+Column\+Stretch\+Factors}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  284. \subsubsection[{set\+Column\+Stretch\+Factors}]{\setlength{\rightskip}{0pt plus 5cm}void Q\+C\+P\+Layout\+Grid\+::set\+Column\+Stretch\+Factors (
  285. \begin{DoxyParamCaption}
  286. \item[{const Q\+List$<$ double $>$ \&}]{factors}
  287. \end{DoxyParamCaption}
  288. )}\label{class_q_c_p_layout_grid_a6c2591d1a7e2534ce036989543b49e57}
  289. Sets the stretch {\itshape factors} of all columns. {\itshape factors} must have the size \hyperlink{class_q_c_p_layout_grid_ac39074eafd148b82d0762090f258189e}{column\+Count}.
  290. Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond their minimum and maximum widths/heights (\hyperlink{class_q_c_p_layout_element_a5dd29a3c8bc88440c97c06b67be7886b}{Q\+C\+P\+Layout\+Element\+::set\+Minimum\+Size}, \hyperlink{class_q_c_p_layout_element_a74eb5280a737ab44833d506db65efd95}{Q\+C\+P\+Layout\+Element\+::set\+Maximum\+Size}), regardless of the stretch factor.
  291. The default stretch factor of newly created rows/columns is 1.
  292. \begin{DoxySeeAlso}{See also}
  293. \hyperlink{class_q_c_p_layout_grid_ae38f31a71687b9d7ee3104852528fb50}{set\+Column\+Stretch\+Factor}, \hyperlink{class_q_c_p_layout_grid_a200b45f9c908f96ebadaa3c8d87a2782}{set\+Row\+Stretch\+Factors}
  294. \end{DoxySeeAlso}
  295. \hypertarget{class_q_c_p_layout_grid_aaef2cd2d456197ee06a208793678e436}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!set\+Row\+Spacing@{set\+Row\+Spacing}}
  296. \index{set\+Row\+Spacing@{set\+Row\+Spacing}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  297. \subsubsection[{set\+Row\+Spacing}]{\setlength{\rightskip}{0pt plus 5cm}void Q\+C\+P\+Layout\+Grid\+::set\+Row\+Spacing (
  298. \begin{DoxyParamCaption}
  299. \item[{int}]{pixels}
  300. \end{DoxyParamCaption}
  301. )}\label{class_q_c_p_layout_grid_aaef2cd2d456197ee06a208793678e436}
  302. Sets the gap that is left blank between rows to {\itshape pixels}.
  303. \begin{DoxySeeAlso}{See also}
  304. \hyperlink{class_q_c_p_layout_grid_a3a49272aba32bb0fddc3bb2a45a3dba0}{set\+Column\+Spacing}
  305. \end{DoxySeeAlso}
  306. \hypertarget{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!set\+Row\+Stretch\+Factor@{set\+Row\+Stretch\+Factor}}
  307. \index{set\+Row\+Stretch\+Factor@{set\+Row\+Stretch\+Factor}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  308. \subsubsection[{set\+Row\+Stretch\+Factor}]{\setlength{\rightskip}{0pt plus 5cm}void Q\+C\+P\+Layout\+Grid\+::set\+Row\+Stretch\+Factor (
  309. \begin{DoxyParamCaption}
  310. \item[{int}]{row, }
  311. \item[{double}]{factor}
  312. \end{DoxyParamCaption}
  313. )}\label{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}
  314. Sets the stretch {\itshape factor} of {\itshape row}.
  315. Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond their minimum and maximum widths/heights (\hyperlink{class_q_c_p_layout_element_a5dd29a3c8bc88440c97c06b67be7886b}{Q\+C\+P\+Layout\+Element\+::set\+Minimum\+Size}, \hyperlink{class_q_c_p_layout_element_a74eb5280a737ab44833d506db65efd95}{Q\+C\+P\+Layout\+Element\+::set\+Maximum\+Size}), regardless of the stretch factor.
  316. The default stretch factor of newly created rows/columns is 1.
  317. \begin{DoxySeeAlso}{See also}
  318. \hyperlink{class_q_c_p_layout_grid_a6c2591d1a7e2534ce036989543b49e57}{set\+Column\+Stretch\+Factors}, \hyperlink{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}{set\+Row\+Stretch\+Factor}
  319. \end{DoxySeeAlso}
  320. \hypertarget{class_q_c_p_layout_grid_a200b45f9c908f96ebadaa3c8d87a2782}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!set\+Row\+Stretch\+Factors@{set\+Row\+Stretch\+Factors}}
  321. \index{set\+Row\+Stretch\+Factors@{set\+Row\+Stretch\+Factors}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  322. \subsubsection[{set\+Row\+Stretch\+Factors}]{\setlength{\rightskip}{0pt plus 5cm}void Q\+C\+P\+Layout\+Grid\+::set\+Row\+Stretch\+Factors (
  323. \begin{DoxyParamCaption}
  324. \item[{const Q\+List$<$ double $>$ \&}]{factors}
  325. \end{DoxyParamCaption}
  326. )}\label{class_q_c_p_layout_grid_a200b45f9c908f96ebadaa3c8d87a2782}
  327. Sets the stretch {\itshape factors} of all rows. {\itshape factors} must have the size \hyperlink{class_q_c_p_layout_grid_af8e6c7a05864ebe610c87756c7b9079c}{row\+Count}.
  328. Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond their minimum and maximum widths/heights (\hyperlink{class_q_c_p_layout_element_a5dd29a3c8bc88440c97c06b67be7886b}{Q\+C\+P\+Layout\+Element\+::set\+Minimum\+Size}, \hyperlink{class_q_c_p_layout_element_a74eb5280a737ab44833d506db65efd95}{Q\+C\+P\+Layout\+Element\+::set\+Maximum\+Size}), regardless of the stretch factor.
  329. The default stretch factor of newly created rows/columns is 1.
  330. \begin{DoxySeeAlso}{See also}
  331. \hyperlink{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}{set\+Row\+Stretch\+Factor}, \hyperlink{class_q_c_p_layout_grid_a6c2591d1a7e2534ce036989543b49e57}{set\+Column\+Stretch\+Factors}
  332. \end{DoxySeeAlso}
  333. \hypertarget{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!simplify@{simplify}}
  334. \index{simplify@{simplify}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  335. \subsubsection[{simplify}]{\setlength{\rightskip}{0pt plus 5cm}void Q\+C\+P\+Layout\+Grid\+::simplify (
  336. \begin{DoxyParamCaption}
  337. {}
  338. \end{DoxyParamCaption}
  339. )\hspace{0.3cm}{\ttfamily [virtual]}}\label{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}
  340. Simplifies the layout by collapsing rows and columns which only contain empty cells.
  341. Reimplemented from \hyperlink{class_q_c_p_layout_a41e6ac049143866e8f8b4964efab01b2}{Q\+C\+P\+Layout}.
  342. \hypertarget{class_q_c_p_layout_grid_a666a9fe9e92054436f9b66eba25cca0c}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!take@{take}}
  343. \index{take@{take}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  344. \subsubsection[{take}]{\setlength{\rightskip}{0pt plus 5cm}bool Q\+C\+P\+Layout\+Grid\+::take (
  345. \begin{DoxyParamCaption}
  346. \item[{{\bf Q\+C\+P\+Layout\+Element} $\ast$}]{element}
  347. \end{DoxyParamCaption}
  348. )\hspace{0.3cm}{\ttfamily [virtual]}}\label{class_q_c_p_layout_grid_a666a9fe9e92054436f9b66eba25cca0c}
  349. Removes the specified {\itshape element} from the layout and returns true on success.
  350. If the {\itshape element} isn\textquotesingle{}t in this layout, returns false.
  351. Note that some layouts don\textquotesingle{}t remove the respective cell right away but leave an empty cell after successful removal of the layout element. To collapse empty cells, use \hyperlink{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}{simplify}.
  352. \begin{DoxySeeAlso}{See also}
  353. \hyperlink{class_q_c_p_layout_grid_acc1277394ff8a6432e111ff9463e6375}{take\+At}
  354. \end{DoxySeeAlso}
  355. Implements \hyperlink{class_q_c_p_layout_ada26cd17e56472b0b4d7fbbc96873e4c}{Q\+C\+P\+Layout}.
  356. \hypertarget{class_q_c_p_layout_grid_acc1277394ff8a6432e111ff9463e6375}{}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!take\+At@{take\+At}}
  357. \index{take\+At@{take\+At}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
  358. \subsubsection[{take\+At}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Q\+C\+P\+Layout\+Element} $\ast$ Q\+C\+P\+Layout\+Grid\+::take\+At (
  359. \begin{DoxyParamCaption}
  360. \item[{int}]{index}
  361. \end{DoxyParamCaption}
  362. )\hspace{0.3cm}{\ttfamily [virtual]}}\label{class_q_c_p_layout_grid_acc1277394ff8a6432e111ff9463e6375}
  363. Removes the element with the given {\itshape index} from the layout and returns it.
  364. If the {\itshape index} is invalid or the cell with that index is empty, returns 0.
  365. Note that some layouts don\textquotesingle{}t remove the respective cell right away but leave an empty cell after successful removal of the layout element. To collapse empty cells, use \hyperlink{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}{simplify}.
  366. \begin{DoxySeeAlso}{See also}
  367. \hyperlink{class_q_c_p_layout_grid_a26849ee5c47b4c940e8d65e8462f1065}{element\+At}, \hyperlink{class_q_c_p_layout_grid_a666a9fe9e92054436f9b66eba25cca0c}{take}
  368. \end{DoxySeeAlso}
  369. Implements \hyperlink{class_q_c_p_layout_a5a79621fa0a6eabb8b520cfc04fb601a}{Q\+C\+P\+Layout}.
  370. The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
  371. \item
  372. \hyperlink{qcustomplot_8h}{qcustomplot.\+h}\item
  373. \hyperlink{qcustomplot_8cpp}{qcustomplot.\+cpp}\end{DoxyCompactItemize}