How to Use QTableWidget/bg
Contents
Как се ползва QTableWidget
Общ преглед на QTableWidget
Чрез QTableWidget могат да се вграждат таблици в Qt приложения. QTableWidget наследява QTableView. Елементите в инстанцията на QTableWidget са от клас QTableWidgetItem.
Основна употреба
Задаване на броя на колоните и на редовете
m_pTableWidget->setRowCount(10);
m_pTableWidget->setColumnCount(3);
Вкарване на наименования на колоните
m_TableHeader<<"#"<<"Name"<<"Text";
m_pTableWidget->setHorizontalHeaderLabels(m_TableHeader);
Вкарване на данни
Най-лесният начин да се постави текст в клетка:
m_pTableWidget->setItem(0, 1, new QTableWidgetItem("Hello"));
Скриване на вертикалната номерация на редовете
Скриване на вертикалната номерация на редовете
m_pTableWidget->verticalHeader()->setVisible(false);
Скриване на решентката
m_pTableWidget->setShowGrid(false);
Задаване на фон на селектирани елементи
Задаване на фон на селектирани елементи
m_pTableWidget->setStyleSheet("QTableView {selection-background-color: red;}");
Забраняване на редакцията
m_pTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
Поведение при селектиране
Поведение при селектиране
Поведението на таблицата при селектиране на редове и клекти може да бъде променено от програмста чрез методите setSelectionBehavior и setSelectionMode. Приложеният пример позволява само единична селекция на цял ред:
m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
Управление на сигнали
Управление на сигнали
QTableWidget осигурява подходящи сигнали за всяко събитие като промяна в селекцията, натискане и др. Пример за прихващане на сигнал от двойно бързо натискане на клетка:
connect( m_pTableWidget, SIGNAL( cellDoubleClicked (int, int) ), this, SLOT( cellSelected( int, int ) ) );
Пример
Следният програмен код използва QTableWidget и всички изброени случай на употреба по-горе. Успешно е тестван на Symbian^3 устройство.
- 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 <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.");
}
Вижте също
Вижте също