В данном разделе мы покажем, как можно применять удобные классы отображения элементов для вывода на экран элементов. В первом примере приводится используемый только для чтения виджет QListWidget, во втором примере - редактируемый QTableWidget и в третьем примере - используемый только для чтения QTree-Widget.
Мы начинаем с простого диалогового окна, которое позволяет пользователю выбрать из списка символ, используемый в блок-схемах программ. Каждый элемент состоит из пиктограммы, текста и уникального идентификатора.
Сначала покажем фрагмент заголовочного файла диалогового окна:
class FlowChartSymbolPicker : public QDialog {
Q OBJECT
public:
FlowChartSymbolPicker(const QMap<int, QString> &symbolMap,
QWidget *parent = 0); int selectedld() const { return id; } void done(int result);
};
При создании диалогового окна мы должны передать его конструктору ассоциативный массив QMap<int, QString>, и после выполнения конструктора мы можем получить идентификатор выбранного элемента (или -1, если пользователь ничего не выбрал), вызывая selectedld()

Рис. 10.3. Приложение Выбор символа блок-схемы (Flowchart Symbol Picker)
FlowChartSymbolPicker::FlowChartSymbolPicker(
const QMap<int, QString> &symbolMap, QWidget *parent) : QDialog(parent)
{
id = -1;
listWidget = new QListWidget; listWidget->setIconSize(QSize(60, 60));
QMapIterator<int, QString> i(symbolMap); while (i. hasNextO) { i.next О;
QListWidgetltem *item = new QListWidgetItem(i.value(),
listWidget);
item->setIcon(iconForSymbol( irvalue())); item->setData('Qt: :UserRole, i.keyO);
}
}
инициализируем id (идентификатор последнего выбранного элемента) значением -1. Затем мы конструируем QListWidget - удобный виджет отображения элементов.. Мы проходим в цикле по всем элементам ассоциативного массива символов блок-схемы symbolMap и для каждого создаем объект QListWidgetltem. Конструктор QListWidgetltem принимает выводимую на экран строку QString и родительский виджет QListWidget.
Затем задаем пиктограмму элемента и вызываем set Data () для сохранения в QListWidgetltem идентификатора элемента. Закрытая функция iconForSymbolO возвращает Qlcon для заданного имени символа. ]
<< назад вперед >>