How to Use QTableWidget/bg: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[Category:Developing with Qt::General]]<br />[[Category:HowTo]]<br />[[Category:Snippets]]<br />[[Category:Tutorial]] | [[Category:Developing with Qt::General]]<br />[[Category:HowTo]]<br />[[Category:Snippets]]<br />[[Category:Tutorial]] | ||
[toc align_right= | [toc align_right="yes" depth="3"] | ||
'''Български''' [[How_to_Use_QTableWidget|English]] | '''Български''' [[How_to_Use_QTableWidget|English]] | ||
Line 9: | Line 9: | ||
== Общ преглед на QTableWidget == | == Общ преглед на QTableWidget == | ||
Чрез | Чрез "QTableWidget":http://doc.qt.io/qt-5.0/qtwidgets/qtablewidget.html могат да се вграждат таблици в Qt приложения. QTableWidget наследява "QTableView":http://doc.qt.io/qt-5.0/qtwidgets/qtableview.html. Елементите в инстанцията на QTableWidget са от клас "QTableWidgetItem":http://doc.qt.io/qt-5.0/qtwidgets/qtablewidgetitem.html. | ||
== Основна употреба == | == Основна употреба == | ||
Line 15: | Line 15: | ||
==== Задаване на броя на колоните и на редовете ==== | ==== Задаване на броя на колоните и на редовете ==== | ||
<code>m_pTableWidget- | <code>m_pTableWidget->setRowCount(10);<br />m_pTableWidget->setColumnCount(3);</code> | ||
==== Вкарване на наименования на колоните ==== | ==== Вкарване на наименования на колоните ==== | ||
<code>m_TableHeader | <code>m_TableHeader<<"#"<<"Name"<<"Text";<br />m_pTableWidget->setHorizontalHeaderLabels(m_TableHeader);</code> | ||
==== Вкарване на данни ==== | ==== Вкарване на данни ==== | ||
Най-лесният начин да се постави текст в клетка:<br /><code>m_pTableWidget- | Най-лесният начин да се постави текст в клетка:<br /><code>m_pTableWidget->setItem(0, 1, new QTableWidgetItem("Hello"));<code> | ||
==== Скриване на вертикалната номерация на редовете ==== | ==== Скриване на вертикалната номерация на редовете ==== | ||
</code>m_pTableWidget- | </code>m_pTableWidget->verticalHeader()->setVisible(false);</code> | ||
<br />h4. Скриване на решентката | <br />h4. Скриване на решентката | ||
<br /><code>m_pTableWidget | <br /><code>m_pTableWidget->setShowGrid(false);<code> | ||
==== Задаване на фон на селектирани елементи ==== | ==== Задаване на фон на селектирани елементи ==== | ||
</code>m_pTableWidget- | </code>m_pTableWidget->setStyleSheet("QTableView {selection-background-color: red;}");</code> | ||
==== Забраняване на редакцията ==== | ==== Забраняване на редакцията ==== | ||
<code>m_pTableWidget- | <code>m_pTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);<code> | ||
==== Поведение при селектиране ==== | ==== Поведение при селектиране ==== | ||
Поведението на таблицата при селектиране на редове и клекти може да бъде променено от програмста чрез методите | Поведението на таблицата при селектиране на редове и клекти може да бъде променено от програмста чрез методите "setSelectionBehavior":http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionBehavior-enum и "setSelectionMode":http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionMode-enum. Приложеният пример позволява само единична селекция на цял ред: | ||
</code>m_pTableWidget- | </code>m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);<br />m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);<code> | ||
==== Управление на сигнали ==== | ==== Управление на сигнали ==== | ||
QTableWidget осигурява подходящи | QTableWidget осигурява подходящи "сигнали за всяко събитие като промяна в селекцията, натискане и др.":http://doc.qt.nokia.com/latest/qtablewidget.html#signals Пример за прихващане на сигнал от двойно бързо натискане на клетка: | ||
</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> | ||
Line 57: | Line 57: | ||
* mainwindow.h | * mainwindow.h | ||
<code>#include | <code>#include <QTableWidget><code> | ||
</code><br />private slots: | </code><br />private slots: | ||
Line 71: | Line 71: | ||
* mainwindow.cpp | * mainwindow.cpp | ||
</code><br />#include | </code><br />#include "mainwindow.h" | ||
#include | #include <QApplication><br />#include <QDesktopWidget><br />#include <QtCore/QCoreApplication><br />#include <QHeaderView><br />#include <QMessageBox> | ||
MainWindow::MainWindow(QWidget *parent)<br /> : QMainWindow(parent),<br /> m_pTableWidget(NULL)<br />{<br /> m_pTableWidget = new QTableWidget(this);<br /> m_pTableWidget- | MainWindow::MainWindow(QWidget *parent)<br /> : QMainWindow(parent),<br /> m_pTableWidget(NULL)<br />{<br /> m_pTableWidget = new QTableWidget(this);<br /> m_pTableWidget->setRowCount(10);<br /> m_pTableWidget->setColumnCount(3);<br /> m_TableHeader<<"#"<<"Name"<<"Text";<br /> m_pTableWidget->setHorizontalHeaderLabels(m_TableHeader);<br /> m_pTableWidget->verticalHeader()->setVisible(false);<br /> m_pTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);<br /> m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);<br /> m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);<br /> m_pTableWidget->setShowGrid(false);<br /> m_pTableWidget->setStyleSheet("QTableView {selection-background-color: red;}");<br /> m_pTableWidget->setGeometry(QApplication::desktop()->screenGeometry()); | ||
<br /> //insert data<br /> m_pTableWidget | <br /> //insert data<br /> m_pTableWidget->setItem(0, 1, new QTableWidgetItem("Hello")); | ||
connect( m_pTableWidget, SIGNAL( cellDoubleClicked (int, int) ),<br /> this, SLOT( cellSelected( int, int ) ) );<br />} | connect( m_pTableWidget, SIGNAL( cellDoubleClicked (int, int) ),<br /> this, SLOT( cellSelected( int, int ) ) );<br />} | ||
Line 82: | Line 82: | ||
MainWindow::~MainWindow()<br />{<br />} | MainWindow::~MainWindow()<br />{<br />} | ||
void MainWindow::cellSelected(int nRow, int nCol)<br />{<br /> QMessageBox::information(this, | void MainWindow::cellSelected(int nRow, int nCol)<br />{<br /> QMessageBox::information(this, "",<br /> "Cell at row "''QString::number(nRow)''<br /> " column "''QString::number(nCol)''<br /> " was double clicked.");<br />}<br /><code> | ||
== Вижте също == | == Вижте също == | ||
"How to use QTableWidget in Qt":http://www.developer.nokia.com/Community/Wiki/index.php?title=How_to_use_QTableWidget_in_Qt |
Revision as of 06:42, 25 February 2015
[toc align_right="yes" depth="3"]
Български English
Как се ползва QTableWidget
Общ преглед на QTableWidget
Чрез "QTableWidget":http://doc.qt.io/qt-5.0/qtwidgets/qtablewidget.html могат да се вграждат таблици в Qt приложения. QTableWidget наследява "QTableView":http://doc.qt.io/qt-5.0/qtwidgets/qtableview.html. Елементите в инстанцията на QTableWidget са от клас "QTableWidgetItem":http://doc.qt.io/qt-5.0/qtwidgets/qtablewidgetitem.html.
Основна употреба
Задаване на броя на колоните и на редовете
m_pTableWidget->setRowCount(10);<br />m_pTableWidget->setColumnCount(3);
Вкарване на наименования на колоните
m_TableHeader<<"#"<<"Name"<<"Text";<br />m_pTableWidget->setHorizontalHeaderLabels(m_TableHeader);
Вкарване на данни
Най-лесният начин да се постави текст в клетка:
m_pTableWidget->setItem(0, 1, new QTableWidgetItem("Hello"));<code>
==== Скриване на вертикалната номерация на редовете ====
m_pTableWidget->verticalHeader()->setVisible(false);
h4. Скриване на решентката
m_pTableWidget->setShowGrid(false);<code>
==== Задаване на фон на селектирани елементи ====
m_pTableWidget->setStyleSheet("QTableView {selection-background-color: red;}");
Забраняване на редакцията
m_pTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);<code>
==== Поведение при селектиране ====
Поведението на таблицата при селектиране на редове и клекти може да бъде променено от програмста чрез методите "setSelectionBehavior":http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionBehavior-enum и "setSelectionMode":http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionMode-enum. Приложеният пример позволява само единична селекция на цял ред:
m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
==== Управление на сигнали ====
QTableWidget осигурява подходящи "сигнали за всяко събитие като промяна в селекцията, натискане и др.":http://doc.qt.nokia.com/latest/qtablewidget.html#signals Пример за прихващане на сигнал от двойно бързо натискане на клетка:
connect( m_pTableWidget, SIGNAL( cellDoubleClicked (int, int) ), this, SLOT( cellSelected( int, int ) ) );
Пример
Следният програмен код използва QTableWidget и всички изброени случай на употреба по-горе. Успешно е тестван на Symbian^3 устройство.
- 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.");
}
Вижте също
"How to use QTableWidget in Qt":http://www.developer.nokia.com/Community/Wiki/index.php?title=How_to_use_QTableWidget_in_Qt