void Spreadsheet::clear() {

setRowCount(O); setColumnCount(O); setRowCount(RowCount); setColumnCount(ColumnCount);

for (int i = 0; i < ColumnCount; ++i) {

QTableWidgetltem *item = new QTableWidgetltem; item->setText(QString(QChar("A' + i))); setHorizontalHeaderItem(i, item);

}

setCurrentCell(0, 0);

}

Функция clear() вызывается из конструктора Spreadsheet для инициализации электронной таблицы. Она также вызывается из MainWindow:: newFile().

Мы могли бы использовать QTableWidget: :clear() для очистки всех элементов и любых выделений, но в этом случае заголовки имели бы текущий размер. Вместо этого мы уменьшаем размер электронной таблицы до 0 х 0. Это приводит к очистке всей электронной таблицы, включая заголовки. Затем мы опять устанавливаем ее размер на ColumnCount х RowCount (26 х 999) и заполняем строку горизонтального за­головка элементами QTableWidgetltem, содержащими обозначения столбцов. Нам не надо задавать метки строк, потому что по умолчанию строки обозначаются как «1», «2»,«26». В конце мы перемещаем курсор на ячейку А1.


Рис. 4.2. Виджеты, составляющие QTableWidget

QTableWidget содержит несколько дочерних виджетов. Сверху располагается го­ризонтальный заголовок QHeaderView, слева - вертикальный заголовок QHeaderView и две полосы прокрутки QScrollBar. В центральной области размещается специальный виджет, называемый областью отображения (viewport), в котором QTableWidget вычерчивает ячейки. Доступ к различным дочерним виджетам осуществляется с по­мощью функций, унаследованных от QTableView и QAbstractScrollArea (рис. 4.2). QAbstractScrollArea содержит перемещаемую область отображения и две полосы прокрутки, которые могут включаться и отключаться. Подкласс QScrollArea рас­сматривается в главе 6.

Хранение данных в объектах типа «элемент»

В приложении Электронная таблица каждая непустая ячейка хранится в па­мяти в виде одного объекта QTableWidgetltem (элемент табличного виджета). Хранение данных в объектах типа «элемент» используется также виджетами QListWidget и QTReeWidget, которые работают с объектами QListWidgetltem и QTRee-Widgetltem

В Qt классы элементов могут использоваться вне таблиц как самостоятель­ные структуры данных. Например, QTableWidgetltem уже содержит некоторые атрибуты, в том числе строку, шрифт, цвет и пиктограмму, а также обратный указатель на QTableWidget


<< назад вперед >>