How to Use QTableWidget: Difference between revisions
Jump to navigation
Jump to search
AutoSpider (talk | contribs) (Convert ExpressionEngine section headers) |
Henri Vikki (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
[[Category:Developing with Qt::General]] | [[Category:Developing with Qt::General]] | ||
Line 6: | Line 6: | ||
[[Category:Tutorial]] | [[Category:Tutorial]] | ||
'''English''' [[How_to_Use_QTableWidget_Bulgarian|Български]] | '''English''' [[How_to_Use_QTableWidget_Bulgarian|Български]] | ||
Line 31: | Line 30: | ||
The simplest way to insert text into a cell: | The simplest way to insert text into a cell: | ||
<code>m_pTableWidget->setItem(0, 1, new QTableWidgetItem("Hello"));<code> | <code>m_pTableWidget->setItem(0, 1, new QTableWidgetItem("Hello"));</code> | ||
==== Hide vertical header aka the line counter ==== | ==== Hide vertical header aka the line counter ==== | ||
< | <code>m_pTableWidget->verticalHeader()->setVisible(false);</code> | ||
==== Hide grid ==== | ==== Hide grid ==== | ||
<code>m_pTableWidget->setShowGrid(false);<code> | <code>m_pTableWidget->setShowGrid(false);</code> | ||
==== Set background of the selected items ==== | ==== Set background of the selected items ==== | ||
< | <code>m_pTableWidget->setStyleSheet("QTableView {selection-background-color: red;}");</code> | ||
==== Disable editing ==== | ==== Disable editing ==== | ||
<code>m_pTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);<code> | <code>m_pTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);</code> | ||
==== Selection mode and behavior ==== | ==== Selection mode and behavior ==== | ||
Line 52: | Line 51: | ||
The behavior of the table for selecting rows and cells can be customized using methods [http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionBehavior-enum setSelectionBehavior] and [http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionMode-enum setSelectionMode]. The following example allows only single selection of a row: | The behavior of the table for selecting rows and cells can be customized using methods [http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionBehavior-enum setSelectionBehavior] and [http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionMode-enum setSelectionMode]. The following example allows only single selection of a row: | ||
< | <code>m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); | ||
m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);<code> | m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);</code> | ||
==== Handling signals ==== | ==== Handling signals ==== | ||
Line 59: | Line 58: | ||
QTableWidget provides appropriate [http://doc.qt.nokia.com/latest/qtablewidget.html#signals signals for each event such as change of selection, click, double click, etc. ] Example of handling double click of a cell: | QTableWidget provides appropriate [http://doc.qt.nokia.com/latest/qtablewidget.html#signals signals for each event such as change of selection, click, double click, etc. ] Example of handling double click of a cell: | ||
< | <code>connect( m_pTableWidget, SIGNAL( cellDoubleClicked (int, int) ), this, SLOT( cellSelected( int, int ) ) );</code> | ||
== Example == | == Example == | ||
Line 67: | Line 66: | ||
* mainwindow.h | * mainwindow.h | ||
<code>#include <QTableWidget><code> | <code>#include <QTableWidget></code> | ||
< | <code> | ||
private slots: | private slots: | ||
Line 79: | Line 78: | ||
QStringList m_TableHeader; | QStringList m_TableHeader; | ||
<code> | </code> | ||
* mainwindow.cpp | * mainwindow.cpp | ||
< | <code> | ||
#include "mainwindow.h" | #include "mainwindow.h" | ||
Line 127: | Line 126: | ||
" was double clicked."); | " was double clicked."); | ||
} | } | ||
<code> | </code> | ||
== See Also == | == See Also == | ||
[http://www.developer.nokia.com/Community/Wiki/index.php?title=How_to_use_QTableWidget_in_Qt How to use QTableWidget in Qt] | [http://www.developer.nokia.com/Community/Wiki/index.php?title=How_to_use_QTableWidget_in_Qt How to use QTableWidget in Qt] |
Revision as of 14:13, 6 March 2015
English Български
How to Use QTableWidget
QTableWidget Overview
Using QTableWidget developers can embed tables inside Qt applications. QTableWidget inherits QTableView. Items in a QTableWidget instance are provided by class QTableWidgetItem.
Basic Usage
Set number of rows and columns
m_pTableWidget->setRowCount(10);
m_pTableWidget->setColumnCount(3);
Insert labels into the horizontal header
m_TableHeader<<"#"<<"Name"<<"Text";
m_pTableWidget->setHorizontalHeaderLabels(m_TableHeader);
Insert data
The simplest way to insert text into a cell:
m_pTableWidget->setItem(0, 1, new QTableWidgetItem("Hello"));
Hide vertical header aka the line counter
m_pTableWidget->verticalHeader()->setVisible(false);
Hide grid
m_pTableWidget->setShowGrid(false);
Set background of the selected items
m_pTableWidget->setStyleSheet("QTableView {selection-background-color: red;}");
Disable editing
m_pTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
Selection mode and behavior
The behavior of the table for selecting rows and cells can be customized using methods setSelectionBehavior and setSelectionMode. 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. 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>
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);
m_pTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
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());
//insert data
m_pTableWidget->setItem(0, 1, new QTableWidgetItem("Hello"));
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.");
}