How to Use QTableWidget: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Convert ExpressionEngine section headers)
(Cleanup)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
{{LangSwitch}}
 
[[Category:Developing with Qt::General]]
[[Category:Developing with Qt::General]]
[[Category:HowTo]]
[[Category:HowTo]]
[[Category:Snippets]]
[[Category:Snippets]]
[[Category:Tutorial]]
[[Category:Tutorial]]
 
__NOTOC__
[toc align_right="yes" depth="3"]
Using {{DocLink|QTableWidget}} developers can embed tables inside Qt applications. QTableWidget inherits {{DocLink|QTableView}}. Items in a QTableWidget instance are provided by class {{DocLink|QTableWidgetItem}}.
 
'''English''' [[How_to_Use_QTableWidget_Bulgarian|Български]]
 
= How to Use QTableWidget =
 
== QTableWidget Overview ==
 
Using [http://doc.qt.io/qt-5.0/qtwidgets/qtablewidget.html QTableWidget] developers can embed tables inside Qt applications. QTableWidget inherits [http://doc.qt.io/qt-5.0/qtwidgets/qtableview.html QTableView]. Items in a QTableWidget instance are provided by class [http://doc.qt.io/qt-5.0/qtwidgets/qtablewidgetitem.html QTableWidgetItem].


== Basic Usage ==
== Basic Usage ==
Line 31: Line 22:


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>
<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>
<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 ====


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/qabstractitemview.html#Public-Functions setSelectionBehavior] and [http://doc.qt.io/qt-5/qabstractitemview.html#Public-Functions setSelectionMode]. The following example allows only single selection of a row:


</code>m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
<code>m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);<code>
m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);</code>


==== Handling signals ====
==== Handling signals ====


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.io/qt-5/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>
<code>connect( m_pTableWidget, SIGNAL( cellDoubleClicked (int, int) ), this, SLOT( cellSelected( int, int ) ) );</code>


== Example ==
== Example ==
Line 67: Line 58:
* mainwindow.h
* mainwindow.h


<code>#include <QTableWidget><code>
<code>#include <QTableWidget></code>


</code>
<code>
private slots:
private slots:


Line 79: Line 70:


QStringList m_TableHeader;
QStringList m_TableHeader;
<code>
</code>


* mainwindow.cpp
* mainwindow.cpp


</code>
<code>
#include "mainwindow.h"
#include "mainwindow.h"


#include <QApplication>
#include <QApplication>
#include <QDesktopWidget>
#include <QDesktopWidget>
#include <QtCore/QCoreApplication>
#include <QCoreApplication>
#include <QHeaderView>
#include <QHeaderView>
#include <QMessageBox>
#include <QMessageBox>
Line 127: Line 118:
  " was double clicked.");
  " was double clicked.");
}
}
<code>
</code>
 
== See Also ==
 
[http://www.developer.nokia.com/Community/Wiki/index.php?title=How_to_use_QTableWidget_in_Qt How to use QTableWidget in Qt]

Latest revision as of 19:23, 27 June 2015

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

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 <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.");
}