File: tutorials-widgets-nestedlayouts.html

package info (click to toggle)
qt4-x11 4%3A4.8.2%2Bdfsg-11
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 701,696 kB
  • sloc: cpp: 2,686,179; ansic: 375,485; python: 25,859; sh: 19,349; xml: 17,091; perl: 14,765; yacc: 5,383; asm: 5,038; makefile: 1,259; lex: 555; ruby: 526; objc: 347; cs: 112; pascal: 112; php: 54; sed: 34
file content (133 lines) | stat: -rw-r--r-- 14,190 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_US" lang="en_US">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- widgets-tutorial.qdoc -->
  <title>Qt 4.8: Widgets Tutorial - Nested Layouts</title>
  <link rel="stylesheet" type="text/css" href="style/offline.css" />
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="content"> 
    <a href="index.html" class="qtref"><span>Qt Reference Documentation</span></a>
  </div>
  <div class="breadcrumb toolblock">
    <ul>
      <li class="first"><a href="index.html">Home</a></li>
      <!--  Breadcrumbs go here -->
<li><a href="all-examples.html">Examples</a></li>
<li>Widgets Tutorial - Nested Layouts</li>
    </ul>
  </div>
</div>
<div class="content mainContent">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#setting-up-the-model">Setting up the Model</a></li>
</ul>
</div>
<h1 class="title">Widgets Tutorial - Nested Layouts</h1>
<span class="subtitle"></span>
<!-- $$$tutorials/widgets/nestedlayouts-description -->
<div class="descr"> <a name="details"></a>
<p>Files:</p>
<ul>
<li><a href="tutorials-widgets-nestedlayouts-main-cpp.html">tutorials/widgets/nestedlayouts/main.cpp</a></li>
<li><a href="tutorials-widgets-nestedlayouts-nestedlayouts-pro.html">tutorials/widgets/nestedlayouts/nestedlayouts.pro</a></li>
</ul>
<p>Just as widgets can contain other widgets, layouts can be used to provide different levels of grouping for widgets. Here, we want to display a label alongside a line edit at the top of a window, above a table view showing the results of a query.</p>
<p>We achieve this by creating two layouts: <tt>queryLayout</tt> is a <a href="qhboxlayout.html">QHBoxLayout</a> that contains <a href="qlabel.html">QLabel</a> and <a href="qlineedit.html">QLineEdit</a> widgets placed side-by-side; <tt>mainLayout</tt> is a <a href="qvboxlayout.html">QVBoxLayout</a> that contains <tt>queryLayout</tt> and a <a href="qtableview.html">QTableView</a> arranged vertically.</p>
<div class="qt-code"><table class="generic">
<tr valign="top" class="odd"><td ><pre class="cpp"> <span class="preprocessor">#include &lt;QtGui&gt;</span>

 <span class="type">int</span> main(<span class="type">int</span> argc<span class="operator">,</span> <span class="type">char</span> <span class="operator">*</span>argv<span class="operator">[</span><span class="operator">]</span>)
 {
     <span class="type"><a href="qapplication.html">QApplication</a></span> app(argc<span class="operator">,</span> argv);
     <span class="type"><a href="qwidget.html">QWidget</a></span> window;

     <span class="type"><a href="qlabel.html">QLabel</a></span> <span class="operator">*</span>queryLabel <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qlabel.html">QLabel</a></span>(
         <span class="type"><a href="qapplication.html">QApplication</a></span><span class="operator">::</span>translate(<span class="string">&quot;nestedlayouts&quot;</span><span class="operator">,</span> <span class="string">&quot;Query:&quot;</span>));
     <span class="type"><a href="qlineedit.html">QLineEdit</a></span> <span class="operator">*</span>queryEdit <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qlineedit.html">QLineEdit</a></span>();
     <span class="type"><a href="qtableview.html">QTableView</a></span> <span class="operator">*</span>resultView <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qtableview.html">QTableView</a></span>();

     <span class="type"><a href="qhboxlayout.html">QHBoxLayout</a></span> <span class="operator">*</span>queryLayout <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qhboxlayout.html">QHBoxLayout</a></span>();
     queryLayout<span class="operator">-</span><span class="operator">&gt;</span>addWidget(queryLabel);
     queryLayout<span class="operator">-</span><span class="operator">&gt;</span>addWidget(queryEdit);

     <span class="type"><a href="qvboxlayout.html">QVBoxLayout</a></span> <span class="operator">*</span>mainLayout <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qvboxlayout.html">QVBoxLayout</a></span>();
     mainLayout<span class="operator">-</span><span class="operator">&gt;</span>addLayout(queryLayout);
     mainLayout<span class="operator">-</span><span class="operator">&gt;</span>addWidget(resultView);
     window<span class="operator">.</span>setLayout(mainLayout);

     <span class="comment">// Set up the model and configure the view...</span>
     window<span class="operator">.</span>setWindowTitle(
         <span class="type"><a href="qapplication.html">QApplication</a></span><span class="operator">::</span>translate(<span class="string">&quot;nestedlayouts&quot;</span><span class="operator">,</span> <span class="string">&quot;Nested layouts&quot;</span>));
     window<span class="operator">.</span>show();
     <span class="keyword">return</span> app<span class="operator">.</span>exec();
 }</pre>
</td><td ><img src="images/widgets-tutorial-nestedlayouts.png" alt="" /></td></tr>
</table>
</div><p>Note that we call the <tt>mainLayout</tt>'s <a href="qboxlayout.html#addLayout">addLayout()</a> function to insert the <tt>queryLayout</tt> above the <tt>resultView</tt> table.</p>
<p>We have omitted the code that sets up the model containing the data shown by the <a href="qtableview.html">QTableView</a> widget, <tt>resultView</tt>. For completeness, we show this below.</p>
<p>As well as <a href="qhboxlayout.html">QHBoxLayout</a> and <a href="qvboxlayout.html">QVBoxLayout</a>, Qt also provides <a href="qgridlayout.html">QGridLayout</a> and <a href="qformlayout.html">QFormLayout</a> classes to help with more complex user interfaces. These can be seen if you run <a href="designer-manual.html#qt-designer">Qt Designer</a>.</p>
<a name="setting-up-the-model"></a>
<h2>Setting up the Model</h2>
<p>In the code above, we did not show where the table's data came from because we wanted to concentrate on the use of layouts. Here, we see that the model holds a number of items corresponding to rows, each of which is set up to contain data for two columns.</p>
<pre class="cpp">     <span class="type"><a href="qstandarditemmodel.html">QStandardItemModel</a></span> model;
     model<span class="operator">.</span>setHorizontalHeaderLabels(
         <span class="type"><a href="qstringlist.html">QStringList</a></span>() <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="type"><a href="qapplication.html">QApplication</a></span><span class="operator">::</span>translate(<span class="string">&quot;nestedlayouts&quot;</span><span class="operator">,</span> <span class="string">&quot;Name&quot;</span>)
                       <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="type"><a href="qapplication.html">QApplication</a></span><span class="operator">::</span>translate(<span class="string">&quot;nestedlayouts&quot;</span><span class="operator">,</span> <span class="string">&quot;Office&quot;</span>));

     <span class="type"><a href="qlist.html">QList</a></span><span class="operator">&lt;</span><span class="type"><a href="qstringlist.html">QStringList</a></span><span class="operator">&gt;</span> rows <span class="operator">=</span> <span class="type"><a href="qlist.html">QList</a></span><span class="operator">&lt;</span><span class="type"><a href="qstringlist.html">QStringList</a></span><span class="operator">&gt;</span>()
         <span class="operator">&lt;</span><span class="operator">&lt;</span> (<span class="type"><a href="qstringlist.html">QStringList</a></span>() <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;Verne Nilsen&quot;</span> <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;123&quot;</span>)
         <span class="operator">&lt;</span><span class="operator">&lt;</span> (<span class="type"><a href="qstringlist.html">QStringList</a></span>() <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;Carlos Tang&quot;</span> <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;77&quot;</span>)
         <span class="operator">&lt;</span><span class="operator">&lt;</span> (<span class="type"><a href="qstringlist.html">QStringList</a></span>() <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;Bronwyn Hawcroft&quot;</span> <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;119&quot;</span>)
         <span class="operator">&lt;</span><span class="operator">&lt;</span> (<span class="type"><a href="qstringlist.html">QStringList</a></span>() <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;Alessandro Hanssen&quot;</span> <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;32&quot;</span>)
         <span class="operator">&lt;</span><span class="operator">&lt;</span> (<span class="type"><a href="qstringlist.html">QStringList</a></span>() <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;Andrew John Bakken&quot;</span> <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;54&quot;</span>)
         <span class="operator">&lt;</span><span class="operator">&lt;</span> (<span class="type"><a href="qstringlist.html">QStringList</a></span>() <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;Vanessa Weatherley&quot;</span> <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;85&quot;</span>)
         <span class="operator">&lt;</span><span class="operator">&lt;</span> (<span class="type"><a href="qstringlist.html">QStringList</a></span>() <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;Rebecca Dickens&quot;</span> <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;17&quot;</span>)
         <span class="operator">&lt;</span><span class="operator">&lt;</span> (<span class="type"><a href="qstringlist.html">QStringList</a></span>() <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;David Bradley&quot;</span> <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;42&quot;</span>)
         <span class="operator">&lt;</span><span class="operator">&lt;</span> (<span class="type"><a href="qstringlist.html">QStringList</a></span>() <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;Knut Walters&quot;</span> <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;25&quot;</span>)
         <span class="operator">&lt;</span><span class="operator">&lt;</span> (<span class="type"><a href="qstringlist.html">QStringList</a></span>() <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;Andrea Jones&quot;</span> <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;34&quot;</span>);

     foreach (<span class="type"><a href="qstringlist.html">QStringList</a></span> row<span class="operator">,</span> rows) {
         <span class="type"><a href="qlist.html">QList</a></span><span class="operator">&lt;</span><span class="type"><a href="qstandarditem.html">QStandardItem</a></span> <span class="operator">*</span><span class="operator">&gt;</span> items;
         foreach (<span class="type"><a href="qstring.html">QString</a></span> text<span class="operator">,</span> row)
             items<span class="operator">.</span>append(<span class="keyword">new</span> <span class="type"><a href="qstandarditem.html">QStandardItem</a></span>(text));
         model<span class="operator">.</span>appendRow(items);
     }

     resultView<span class="operator">-</span><span class="operator">&gt;</span>setModel(<span class="operator">&amp;</span>model);
     resultView<span class="operator">-</span><span class="operator">&gt;</span>verticalHeader()<span class="operator">-</span><span class="operator">&gt;</span>hide();
     resultView<span class="operator">-</span><span class="operator">&gt;</span>horizontalHeader()<span class="operator">-</span><span class="operator">&gt;</span>setStretchLastSection(<span class="keyword">true</span>);</pre>
<p>The use of models and views is covered in the <a href="examples-itemviews.html">Item Views Examples</a> and in the <a href="model-view-programming.html">Model/View Programming</a> overview.</p>
</div>
<!-- @@@tutorials/widgets/nestedlayouts -->
  <div class="ft">
    <span></span>
  </div>
</div> 
<div class="footer">
    <p>
      <acronym title="Copyright">&copy;</acronym> 2012 Nokia Corporation and/or its
      subsidiaries. Documentation contributions included herein are the copyrights of
      their respective owners.</p>
    <br />
    <p>
      The documentation provided herein is licensed under the terms of the
      <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation
      License version 1.3</a> as published by the Free Software Foundation.</p>
    <p>
      Documentation sources may be obtained from <a href="http://www.qt-project.org">
      www.qt-project.org</a>.</p>
    <br />
    <p>
      Nokia, Qt and their respective logos are trademarks of Nokia Corporation 
      in Finland and/or other countries worldwide. All other trademarks are property
      of their respective owners. <a title="Privacy Policy"
      href="http://en.gitorious.org/privacy_policy/">Privacy Policy</a></p>
</div>
</body>
</html>