How to Use QTableWidget/bg: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
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=&quot;yes&amp;quot; depth=&quot;3&amp;quot;]
[toc align_right="yes" depth="3"]


'''Български''' [[How_to_Use_QTableWidget|English]]
'''Български''' [[How_to_Use_QTableWidget|English]]
Line 9: Line 9:
== Общ преглед на QTableWidget ==
== Общ преглед на QTableWidget ==


Чрез &quot;QTableWidget&amp;quot;:http://doc.qt.io/qt-5.0/qtwidgets/qtablewidget.html могат да се вграждат таблици в Qt приложения. QTableWidget наследява &quot;QTableView&amp;quot;:http://doc.qt.io/qt-5.0/qtwidgets/qtableview.html. Елементите в инстанцията на QTableWidget са от клас &quot;QTableWidgetItem&amp;quot;:http://doc.qt.io/qt-5.0/qtwidgets/qtablewidgetitem.html.
Чрез "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-&gt;setRowCount(10);<br />m_pTableWidget-&gt;setColumnCount(3);</code>
<code>m_pTableWidget->setRowCount(10);<br />m_pTableWidget->setColumnCount(3);</code>


==== Вкарване на наименования на колоните ====
==== Вкарване на наименования на колоните ====


<code>m_TableHeader&amp;lt;&lt;&quot;#&quot;&lt;&lt;&quot;Name&amp;quot;&lt;&lt;&quot;Text&amp;quot;;<br />m_pTableWidget-&gt;setHorizontalHeaderLabels(m_TableHeader);</code>
<code>m_TableHeader<<"#"<<"Name"<<"Text";<br />m_pTableWidget->setHorizontalHeaderLabels(m_TableHeader);</code>


==== Вкарване на данни ====
==== Вкарване на данни ====


Най-лесният начин да се постави текст в клетка:<br /><code>m_pTableWidget-&gt;setItem(0, 1, new QTableWidgetItem(&quot;Hello&amp;quot;));<code>
Най-лесният начин да се постави текст в клетка:<br /><code>m_pTableWidget->setItem(0, 1, new QTableWidgetItem("Hello"));<code>


==== Скриване на вертикалната номерация на редовете ====
==== Скриване на вертикалната номерация на редовете ====


</code>m_pTableWidget-&gt;verticalHeader()<s>&gt;setVisible(false);</code>
</code>m_pTableWidget->verticalHeader()->setVisible(false);</code>
<br />h4. Скриване на решентката
<br />h4. Скриване на решентката
<br /><code>m_pTableWidget</s>&gt;setShowGrid(false);<code>
<br /><code>m_pTableWidget->setShowGrid(false);<code>


==== Задаване на фон на селектирани елементи ====
==== Задаване на фон на селектирани елементи ====


</code>m_pTableWidget-&gt;setStyleSheet(&quot;QTableView {selection-background-color: red;}&quot;);</code>
</code>m_pTableWidget->setStyleSheet("QTableView {selection-background-color: red;}");</code>


==== Забраняване на редакцията ====
==== Забраняване на редакцията ====


<code>m_pTableWidget-&gt;setEditTriggers(QAbstractItemView::NoEditTriggers);<code>
<code>m_pTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);<code>


==== Поведение при селектиране ====
==== Поведение при селектиране ====


Поведението на таблицата при селектиране на редове и клекти може да бъде променено от програмста чрез методите &quot;setSelectionBehavior&amp;quot;:http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionBehavior-enum и &quot;setSelectionMode&amp;quot;:http://doc.qt.io/qt-5.0/qtwidgets/qabstractitemview.html#SelectionMode-enum. Приложеният пример позволява само единична селекция на цял ред:
Поведението на таблицата при селектиране на редове и клекти може да бъде променено от програмста чрез методите "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-&gt;setSelectionBehavior(QAbstractItemView::SelectRows);<br />m_pTableWidget-&gt;setSelectionMode(QAbstractItemView::SingleSelection);<code>
</code>m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);<br />m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);<code>


==== Управление на сигнали ====
==== Управление на сигнали ====


QTableWidget осигурява подходящи &quot;сигнали за всяко събитие като промяна в селекцията, натискане и др.&quot;:http://doc.qt.nokia.com/latest/qtablewidget.html#signals Пример за прихващане на сигнал от двойно бързо натискане на клетка:
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 &lt;QTableWidget&amp;gt;<code>
<code>#include <QTableWidget><code>


</code><br />private slots:
</code><br />private slots:
Line 71: Line 71:
* mainwindow.cpp
* mainwindow.cpp


</code><br />#include &quot;mainwindow.h&amp;quot;
</code><br />#include "mainwindow.h"


#include &lt;QApplication&amp;gt;<br />#include &lt;QDesktopWidget&amp;gt;<br />#include &lt;QtCore/QCoreApplication&amp;gt;<br />#include &lt;QHeaderView&amp;gt;<br />#include &lt;QMessageBox&amp;gt;
#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-&gt;setRowCount(10);<br /> m_pTableWidget-&gt;setColumnCount(3);<br /> m_TableHeader&amp;lt;&lt;&quot;#&quot;&lt;&lt;&quot;Name&amp;quot;&lt;&lt;&quot;Text&amp;quot;;<br /> m_pTableWidget-&gt;setHorizontalHeaderLabels(m_TableHeader);<br /> m_pTableWidget-&gt;verticalHeader()<s>&gt;setVisible(false);<br /> m_pTableWidget</s>&gt;setEditTriggers(QAbstractItemView::NoEditTriggers);<br /> m_pTableWidget-&gt;setSelectionBehavior(QAbstractItemView::SelectRows);<br /> m_pTableWidget-&gt;setSelectionMode(QAbstractItemView::SingleSelection);<br /> m_pTableWidget-&gt;setShowGrid(false);<br /> m_pTableWidget-&gt;setStyleSheet(&quot;QTableView {selection-background-color: red;}&quot;);<br /> m_pTableWidget-&gt;setGeometry(QApplication::desktop()<s>&gt;screenGeometry());
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</s>&gt;setItem(0, 1, new QTableWidgetItem(&quot;Hello&amp;quot;));
<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, &quot;&quot;,<br /> &quot;Cell at row &quot;''QString::number(nRow)''<br /> &quot; column &quot;''QString::number(nCol)''<br /> &quot; was double clicked.&quot;);<br />}<br /><code>
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>


== Вижте също ==
== Вижте също ==


&quot;How to use QTableWidget in Qt&amp;quot;: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

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"

  1. 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