Жасмин Бланшет

Книги → QT 4: программирование GUI на С++ → Применение удобных классов отображения элементов

По умолчанию виджет QTableWidget разрешает редактирование. Пользователь может редактировать любую ячейку таблицы, установив на нее курсор и нажав F2 или просто вводя текст с клавиатуры. Все сделанные пользователем изменения автоматически сохранятся в элементах QTableWidgetltem. Запретить редактирование мы можем с помощью вызова setEditTriggers(QAbstractItemView::NoEditTriggers).

01 void CoordinateSetter::addRow()

02 {

03 int row = tableWidget->rowCount();

04 tableWidget->insertRow(row);

05 QTableWidgetltem *item0 = new QTableWidgetltem;

06 item0->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);

07 tableWidget->setItem(row, 0, item0);

08 QTableWidgetltem *item1 = new QTableWidgetltem;

09 item1->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);

10 tableWidget->setItem(row, 1, item1);

11 tableWidget->setCurrentItem(item0);

12 }

Слот addRow() вызывается, когда пользователь щелкает по кнопке Add Row (добавить строку). Мы добавляем в конец таблицы новую строку, используя insertRow(). Если пользователь попытается отредактировать какую-нибудь ячейку новой строки, QTableWidget автоматически создаст новый объект QTableWidgetItem.

01 void CoordinateSetter::done(int result)

02 {

03 if (result == QDialog::Accepted) {

04 coordinates->clear();

05 for (int row = 0; row < tableWidget->rowCount(); ++row) {

06 double x = tableWidget->item(row, 0)->text().toDouble();

07 double у = tableWidget->item(row, 1)->text().toDouble();

08 coordinates->append(QPointF(x, y));

09 }

10 }

11 QDialog::done(result);

12 }

Наконец, когда пользователь нажимает кнопку OK, мы очищаем координаты, переданные ранее в диалоговое окно, и создаем новый набор на основе координат в элементах виджета QTableWidget.

В качестве нашего третьего и последнего примера применения в Qt удобных виджетов отображения элементов мы рассмотрим некоторые фрагменты приложения, которое показывает параметры настройки Qt—приложения, используя QTreeWidget. Данный виджет по умолчанию используется только для чтения.

Рис. 10.5. Приложение Просмотр параметров настройки (Settings Viewer).

Ниже приводится фрагмент конструктора:

01 SettingsViewer::SettingsViewer(QWidget *parent)

02 : QDialog(parent)

03 {

04 organization = "Trolltech";

05 application = "Designer";

06 treeWidget = new QTreeWidget;

08 treeWidget->setColumnCount(2);

09 treeWidget->setHeaderLabels(

10 QStringList() << tr("Key") << tr("Value"));

11 treeWidget->header()->setResizeMode(0, QHeaderView::Stretch);

12 treeWidget->header()->setResizeMode(1, QHeaderView::Stretch);

13 …

14 setWindowTitle(tr("Settings Viewer"));

15 readSettings();

16 }

Для получения доступа к параметрам настройки приложения необходимо создать объект QSettings с указанием в параметрах названия организации и имени приложения. Мы устанавливаем значения по умолчанию (приложение «Designer» компании «Trolltech») и затем создаем новый объект QTreeWidget. В конце мы вызываем фyнкцию readSettings().

← предыдущая следующая →

Страницы раздела: 1 2 3 4

Публикация компанией Dropbox кода Zulip – средства общения для IT-разработчиков

20.11.2015
Одной из одобрительно встреченных программистами инициатив, реализующихся в рамках акции Hack Week, стала публикация исходного кода приложения Zulip – веб-приложения для общения между собой разработчиков в сфере IT-технологий.

Объединение ОС Android и Chrome

17.11.2015
Слухи об объединении двух крупнейших ОС компании Google, Android и Chrome, гуляют по Интернету уже более 5 лет, но до сих пор этого не случилось, хотя очевидно, что с течением времени эти ОС становятся всё более похожими: так, в последнее время появилось немало Android-устройств, к которым прилагаются клавиатуры, а Chrome OS «научилась» работать с сенсорными экранами.

Конференция Linux Piter 2015

15.11.2015
Уже почти через неделю в Санкт-Петербурге впервые в истории пройдёт конференция, посвящённая проблемам свободного программного обеспечения – Linux Piter 2015.