How to Use QTableWidget/bg

From Qt Wiki
Jump to: navigation, search
БългарскиEnglish

Как се ползва 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

  1. include "mainwindow.h"
  1. include <QApplication>
  2. include <QDesktopWidget>
  3. include <QCoreApplication>
  4. include <QHeaderView>
  5. 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