How to Use QTableWidget: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
(Doc links fixed)
Line 12: Line 12:
== QTableWidget Overview ==
== 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].
Using [http://doc.qt.io/qt-5/qtablewidget.html QTableWidget] developers can embed tables inside Qt applications. QTableWidget inherits [http://doc.qt.io/qt-5/qtableview.html QTableView]. Items in a QTableWidget instance are provided by class [http://doc.qt.io/qt-5/qtablewidgetitem.html QTableWidgetItem].


== Basic Usage ==
== Basic Usage ==
Line 48: Line 48:
==== 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);
Line 55: Line 55:
==== 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>

Revision as of 12:21, 2 April 2015


English Български


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

See Also

How to use QTableWidget in Qt