How to Use QTableWidget
This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine. Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean. |
[toc align_right="yes" depth="3"]
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"));<code>
==== Hide vertical header aka the line counter ====
m_pTableWidget->verticalHeader()->setVisible(false);
Hide grid
m_pTableWidget->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 [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:
m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
==== 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:
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><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); 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