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
<< назад вперед >>