Вход/Регистрация
QT 4: программирование GUI на С++
вернуться

Саммерфилд Марк

Шрифт:

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.

01 void SettingsViewer::readSettings

02 {

03 QSettings settings(organization, application);

04 treeWidget->clear;

05 addChildSettings(settings, 0, "");

06 treeWidget->sortByColurnn(0);

07 treeWidget->setFocus;

08 setWindowTitle(tr("Settings Viewer - %1 by %2")

09 .arg(application).arg(organization));

10 }

Параметры настройки приложения хранятся в виде набора ключей и значений, имеющих иерархическую структуру. Закрытая функция addChildSettings принимает объект параметров настройки, родительский элемент QTreeWidgetItem и текущую «группу». Группа в QSettings аналогична каталогу файловой системы. Функция addChildSettings может вызывать себя рекурсивно для прохода по произвольной структуре типа дерева. При первом ее вызове из функции readSettings передается 0, задавая корень в качестве родительского объекта.

  • Читать дальше
  • 1
  • ...
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: