How to Use QTableWidget: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Convert ExpressionEngine section headers)
No edit summary
Line 1: Line 1:
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
 


[[Category:Developing with Qt::General]]
[[Category:Developing with Qt::General]]
Line 6: Line 6:
[[Category:Tutorial]]
[[Category:Tutorial]]


[toc align_right="yes" depth="3"]


'''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>
<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 ====
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);
<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>
<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>
<code>
private slots:
private slots:


Line 79: Line 78:


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


* mainwindow.cpp
* mainwindow.cpp


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

See Also

How to use QTableWidget in Qt