How to Use QTableWidget: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[Category:Developing with Qt::General]]<br />[[Category:HowTo]]<br />[[Category:Snippets]]<br />[[Category:Tutorial]] | |||
= | [toc align_right="yes&quot; depth="3&quot;] | ||
'''English''' [[How_to_Use_QTableWidget_Bulgarian|Български]] | |||
= How to Use QTableWidget = | |||
== | == QTableWidget Overview == | ||
Using "QTableWidget&quot;:http://doc.qt.io/qt-5.0/qtwidgets/qtablewidget.html developers can embed tables inside Qt applications. QTableWidget inherits "QTableView&quot;:http://doc.qt.io/qt-5.0/qtwidgets/qtableview.html. Items in a QTableWidget instance are provided by class "QTableWidgetItem&quot;:http://doc.qt.io/qt-5.0/qtwidgets/qtablewidgetitem.html. | |||
== | == Basic Usage == | ||
==== | ==== Set number of rows and columns ==== | ||
<code>m_pTableWidget->setRowCount(10);<br />m_pTableWidget->setColumnCount(3);</code> | |||
==== | ==== Insert labels into the horizontal header ==== | ||
<code>m_TableHeader&lt;<"#"<<"Name&quot;<<"Text&quot;;<br />m_pTableWidget->setHorizontalHeaderLabels(m_TableHeader);</code> | |||
==== | ==== Insert data ==== | ||
The simplest way to insert text into a cell:<br /><code>m_pTableWidget->setItem(0, 1, new QTableWidgetItem("Hello&quot;));<code> | |||
==== | ==== Hide vertical header aka the line counter ==== | ||
</code>m_pTableWidget->verticalHeader()<s>>setVisible(false);</code> | |||
<br />h4. Hide grid | |||
<br /><code>m_pTableWidget</s>>setShowGrid(false);<code> | |||
==== | ==== Set background of the selected items ==== | ||
</code>m_pTableWidget->setStyleSheet("QTableView {selection-background-color: red;}");</code> | |||
==Example== | ==== Disable editing ==== | ||
<code>m_pTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);<code> | |||
==== Selection mode and behavior ==== | |||
The behavior of the table for selecting rows and cells can be customized using methods "setSelectionBehavior&quot;:http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionBehavior-enum and "setSelectionMode&quot;:http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionMode-enum. The following example allows only single selection of a row: | |||
</code>m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);<br />m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);<code> | |||
==== Handling signals ==== | |||
QTableWidget provides appropriate "signals for each event such as change of selection, click, double click, etc. ":http://doc.qt.nokia.com/latest/qtablewidget.html#signals Example of handling double click of a cell: | |||
</code>connect( m_pTableWidget, SIGNAL( cellDoubleClicked (int, int) ), this, SLOT( cellSelected( int, int ) ) );</code> | |||
== Example == | |||
The following code snippet uses QTableWidget and all described cases above. It has been tested on Symbian^3 device. | The following code snippet uses QTableWidget and all described cases above. It has been tested on Symbian^3 device. | ||
* mainwindow.h | * mainwindow.h | ||
<code>#include <QTableWidget&gt;<code> | |||
</code><br />private slots: | |||
void cellSelected(int nRow, int nCol); | |||
private: | |||
QTableWidget* m_pTableWidget; | |||
QStringList m_TableHeader;<br /><code> | |||
* mainwindow.cpp | * mainwindow.cpp | ||
= | </code><br />#include "mainwindow.h&quot; | ||
#include <QApplication&gt;<br />#include <QDesktopWidget&gt;<br />#include <QtCore/QCoreApplication&gt;<br />#include <QHeaderView&gt;<br />#include <QMessageBox&gt; | |||
MainWindow::MainWindow(QWidget *parent)<br /> : QMainWindow(parent),<br /> m_pTableWidget(NULL)<br />{<br /> m_pTableWidget = new QTableWidget(this);<br /> m_pTableWidget->setRowCount(10);<br /> m_pTableWidget->setColumnCount(3);<br /> m_TableHeader&lt;<"#"<<"Name&quot;<<"Text&quot;;<br /> m_pTableWidget->setHorizontalHeaderLabels(m_TableHeader);<br /> m_pTableWidget->verticalHeader()<s>>setVisible(false);<br /> m_pTableWidget</s>>setEditTriggers(QAbstractItemView::NoEditTriggers);<br /> m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);<br /> m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);<br /> m_pTableWidget->setShowGrid(false);<br /> m_pTableWidget->setStyleSheet("QTableView {selection-background-color: red;}");<br /> m_pTableWidget->setGeometry(QApplication::desktop()<s>>screenGeometry()); | |||
<br /> //insert data<br /> m_pTableWidget</s>>setItem(0, 1, new QTableWidgetItem("Hello&quot;)); | |||
connect( m_pTableWidget, SIGNAL( cellDoubleClicked (int, int) ),<br /> this, SLOT( cellSelected( int, int ) ) );<br />} | |||
MainWindow::~MainWindow()<br />{<br />} | |||
void MainWindow::cellSelected(int nRow, int nCol)<br />{<br /> QMessageBox::information(this, "",<br /> "Cell at row "''QString::number(nRow)''<br /> " column "''QString::number(nCol)''<br /> " was double clicked.");<br />}<br /><code> | |||
== | == See Also == | ||
"How to use QTableWidget in Qt&quot;:http://www.developer.nokia.com/Community/Wiki/index.php?title=How_to_use_QTableWidget_in_Qt | |||
Revision as of 14:14, 23 February 2015
[toc align_right="yes" depth="3"]
English Български
How to Use QTableWidget
QTableWidget Overview
Using "QTableWidget":http://doc.qt.io/qt-5.0/qtwidgets/qtablewidget.html developers can embed tables inside Qt applications. QTableWidget inherits "QTableView":http://doc.qt.io/qt-5.0/qtwidgets/qtableview.html. Items in a QTableWidget instance are provided by class "QTableWidgetItem":http://doc.qt.io/qt-5.0/qtwidgets/qtablewidgetitem.html.
Basic Usage
Set number of rows and columns
m_pTableWidget->setRowCount(10);<br />m_pTableWidget->setColumnCount(3);
Insert labels into the horizontal header
m_TableHeader&lt;<"#"<<"Name&quot;<<"Text&quot;;<br />m_pTableWidget->setHorizontalHeaderLabels(m_TableHeader);
Insert data
The simplest way to insert text into a cell:
m_pTableWidget->setItem(0, 1, new QTableWidgetItem("Hello&quot;));<code>
==== Hide vertical header aka the line counter ====
m_pTableWidget->verticalHeader()>setVisible(false);
h4. Hide grid
m_pTableWidget</s>>setShowGrid(false);<code>
==== Set background of the selected items ====
m_pTableWidget->setStyleSheet("QTableView {selection-background-color: red;}");
Disable editing
m_pTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);<code>
==== Selection mode and behavior ====
The behavior of the table for selecting rows and cells can be customized using methods "setSelectionBehavior&quot;:http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionBehavior-enum and "setSelectionMode&quot;:http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionMode-enum. The following example allows only single selection of a row:
m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
==== Handling signals ====
QTableWidget provides appropriate "signals for each event such as change of selection, click, double click, etc. ":http://doc.qt.nokia.com/latest/qtablewidget.html#signals Example of handling double click of a cell:
connect( m_pTableWidget, SIGNAL( cellDoubleClicked (int, int) ), this, SLOT( cellSelected( int, int ) ) );
Example
The following code snippet uses QTableWidget and all described cases above. It has been tested on Symbian^3 device.
- mainwindow.h
#include <QTableWidget&gt;<code>
private slots:
void cellSelected(int nRow, int nCol);
private:
QTableWidget* m_pTableWidget;
QStringList m_TableHeader;
* mainwindow.cpp
#include "mainwindow.h"
- include <QApplication>
#include <QDesktopWidget>
#include <QtCore/QCoreApplication>
#include <QHeaderView>
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent),
m_pTableWidget(NULL)
{
m_pTableWidget = new QTableWidget(this);
m_pTableWidget->setRowCount(10);
m_pTableWidget->setColumnCount(3);
m_TableHeader<<"#"<<"Name"<<"Text";
m_pTableWidget->setHorizontalHeaderLabels(m_TableHeader);
m_pTableWidget->verticalHeader()>setVisible(false);>setEditTriggers(QAbstractItemView::NoEditTriggers);
m_pTableWidget
m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
m_pTableWidget->setShowGrid(false);
m_pTableWidget->setStyleSheet("QTableView {selection-background-color: red;}");
m_pTableWidget->setGeometry(QApplication::desktop()>screenGeometry());
>setItem(0, 1, new QTableWidgetItem("Hello"));
//insert data
m_pTableWidget
connect( m_pTableWidget, SIGNAL( cellDoubleClicked (int, int) ),
this, SLOT( cellSelected( int, int ) ) );
}
MainWindow::~MainWindow()
{
}
void MainWindow::cellSelected(int nRow, int nCol)
{
QMessageBox::information(this, "",
"Cell at row "QString::number(nRow)
" column "QString::number(nCol)
" was double clicked.");
}
See Also
"How to use QTableWidget in Qt":http://www.developer.nokia.com/Community/Wiki/index.php?title=How_to_use_QTableWidget_in_Qt