Жасмин Бланшет - QT 4 - программирование GUI на С++

Здесь есть возможность читать онлайн «Жасмин Бланшет - QT 4 - программирование GUI на С++» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2007, ISBN: 2007, Издательство: КУДИЦ-ПРЕСС, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

QT 4: программирование GUI на С++: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «QT 4: программирование GUI на С++»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Единственное официальное руководстро по практическому программированию в среде Qt 4.1. Применяя средства разработки Qt компании «Trolltech», вы сможете создавать на С++ промышленные приложения, которые естественно работают в средах Windows, Linux/UNIX, Linux для встроенных систем без изменения программного кода и Mac Os X. Книга написана сотрудниками компании «Trolltech». Она представляет собой практическое руководство по успешному применению самой мощной из всех созданных до сих пор версий Qt — Qt 4.1.
Из книги «Qt 4: программирование GUI на С++» вы узнаете о наиболее эффективных приемах и методах программирования с применением Qt 4 и овладеете ключевыми технологиями в самых различных областях — от архитектуры Qt модель/представление до мощного графического процессора 2D. Авторы вооружают читателей беспрецедентно глубокими знаниями модели событий и системы компоновки Qt.
На реалистических примерах они описывают высокоэффективные методы во всех областях — от разработки основных элементов графического пользовательского интерфейса до передовых методов интеграции с базой данных и XML. Каждая глава содержит полностью обновленный материал.
Данное издание:
• Включает новые главы по архитектуре Qt 4 модель/представление и поддержке подключаемых модулей Qt, а также краткое введение в программирование встроенных систем на платформе Qtopia.
• Раскрывает все основные принципы программирования в среде Qt — от создания диалоговых и других окон до реализации функциональности приложений.
• Знакомит с передовыми методами управления компоновкой виджетов и обработкой событий.
• Показывает, как можно с наибольшей эффективностью использовать новые программные интерфейсы Qt 4, в частности мощный графический процессор 2D и новые простые в применении классы—контейнеры.
• Представляет передовые методы Qt 4, которых нет ни в одной книге: от создания подключаемых модулей, расширяющих возможности Qt, и приложений, до применения «родных» для конкретной платформы программных интерфейсов.
• Содержит приложение с подробным введением в программирование на С++ в среде Qt для опытных Java—разработчиков.
Жасмин Бланшет (Jasmine Blanchette) — менеджер по документированию и старший разработчик компании «Trolltech» с 2001 года. Он является редактором «Qt Quarterly», информационного бюллетеня компании «Trolltech», и соавтором книги «Qt 3: программирование GUI на С++».
Марк Саммерфилд (Mark Summerfield) — независимый преподаватель и консультант по С++, Qt и Python. Он работал менеджером по документированию в компании «Trolltech» на протяжении трех лет. Марк является соавтором книги «Qt 3: программирование GUI на С++».

QT 4: программирование GUI на С++ — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «QT 4: программирование GUI на С++», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

181 void Plotter::updateRubberBandRegion()

182 {

183 QRect rect = rubberBandRect.normalized();

184 update(rect.left(), rect.top(), rect.width(), 1);

185 update(rect.left(), rect.top(), 1, rect.height());

186 update(rect.left(), rect.bottom(), rect.width(), 1);

187 update(rect.right(), rect.top(), 1, rect.height());

188 }

Функция updateRubberBand() вызывается из mousePressEvent(), mouseMoveEvent() и mouseReleaseEvent() для стирания или перерисовки резиновой ленты. Она состоит из четырех вызовов функции update(), которая устанавливает в очередь событие рисования для четырех небольших прямоугольных областей, составляющих изображение резиновой ленты (две вертикальные и две горизонтальные линии). Для рисования резиновой ленты в Qt предусмотрен класс QRubberBand, однако в нашем случае ручное кодирование обеспечило более тонкое управление.

189 void Plotter::refreshPixmap()

190 {

191 pixmap = QPixmap(size());

192 pixmap.fill(this, 0, 0);

193 QPainter painter(&pixmap);

194 painter.initFrom(this);

195 drawGrid(&painter);

196 drawCurves(&painter);

197 update();

198 }

Функция refreshPixmap() перерисовывает график на внеэкранной пиксельной карте и обновляет изображение на экране. Мы изменяем размеры пиксельной карты на размеры виджета и заполняем ее цветом стертого виджета. Этот цвет является «темным» компонентом палитры из-за вызова функции setBackgroundRole() в конструкторе Plotter. Если фон задается неоднородной кистью, в функции QPixmap::fill() необходимо указать смещение в виджете, где будет заканчиваться пиксельная карта, чтобы правильно выравнить образец кисти. Здесь пиксельная карта соответствует всему виджету, поэтому мы задаем позицию (0, 0).

Затем мы создаем QPainter для вычерчивания диаграммы на пиксельной карте. Вызов initFrom() устанавливает в рисовальщике перо, фон и шрифт такими же, как для виджета Plotter. Затем мы вызываем функции drawGrid() и drawCurves(), которые рисуют диаграмму. В конце мы вызываем функцию update() для инициации события рисования всего виджета. Пиксельная карта копируется в виджет функцией paintEvent().

199 void Plotter::drawGrid(QPainter *painter)

200 {

201 QRect rect(Margin, Margin,

202 width() - 2 * Margin, height() - 2 * Margin);

203 if (!rect.isValid())

204 return;

205 PlotSettings settings = zoomStack[curZoom];

206 QPen quiteDark = palette().dark().color().light();

207 QPen light = palette().light().color();

208 for (int i = 0; i <= settings.numXTicks; ++i) {

209 int x = rect.left() + (i * (rect.width() - 1)

210 / settings.numXTicks);

211 double label = settings.minX + (i * settings.spanX()

212 / settings.numXTicks);

213 painter->setPen(quiteDark);

214 painter->drawLine(x, rect.top(), x, rect.bottom());

215 painter->setPen(light);

216 painter->drawLine(x, rect.bottom(), x, rect.bottom() + 5);

217 painter->drawText(x - 50, rect.bottom() + 5, 100, 15,

218 Qt::AlignHCenter | Qt::AlignTop,

219 QString::number(label));

220 }

221 for (int j = 0; j <= settings.numVTicks; ++j) {

222 int y = rect.bottom() - (j * (rect.height() - 1)

223 / settings.numYTicks);

224 double label = settings.minY + (j * settings.spanY()

225 / settings.numYTicks);

226 painter->setPen(quiteDark);

227 painter->drawLine(rect.left(), у, rect.right(), у);

228 painter->setPen(light);

229 painter->drawLine(rect.left() - 5, y, rect.left(), у);

230 painter->drawText(rect.left() - Margin, у - 10, Margin - 5, 20,

231 Qt::AlignRight | Qt::AlignVCenter,

232 QString::number(label));

233 }

234 painter->drawRect(rect.adjusted(0, 0, -1, -1));

235 }

Функция drawGrid() чертит сетку под кривыми и осями. Область для вычерчивания сетки задается прямоугольником rect. Если размеры виджета недостаточны для размещения графика, мы сразу возвращаем управление.

Первый цикл for проводит вертикальные линии сетки и отметки по оси x. Второй цикл for выводит горизонтальные линии и отметки по оси y. В конце мы рисуем прямоугольники по окаймляющей кромке. Функция drawText() применяется для вывода числовых значений для отметок обеиз осей.

Вызовы функции drawText() имеют следующий формат:

painter.drawText( x, у, ширина, высота, смещение, текст);

где (x, у, ширина, высота) определяют прямоугольник, смещение задает позицию текста в этом прямоугольнике и текст представляет собой выводимый текст.

236 void Plotter::drawCurves(QPainter *painter)

237 {

238 static const QColor colorForIds[6] = {

239 Qt::red, Qt::green, Qt::blue, Qt::cyan, Qt::magenta, Qt::yellow };

240 PlotSettings settings = zoomStack[curZoom];

241 QRect rect(Margin, Margin,

242 width() - 2 * Margin, height() - 2 * Margin);

243 if (!rect.isValid())

244 return;

245 painter->setClipRect(rect.adjusted(+1, +1, -1, -1));

246 QMapIterator > i(curveMap);

247 while (i.hasNext()) {

248 i.next();

249 int id = i.key();

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «QT 4: программирование GUI на С++»

Представляем Вашему вниманию похожие книги на «QT 4: программирование GUI на С++» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Бертрис Смолл - Дикарка Жасмин
Бертрис Смолл
Георгий Семенов - Жасмин в тени забора
Георгий Семенов
Жасмин Гиллори - Свадебное свидание
Жасмин Гиллори
Жасмин Майер - Онлайн
Жасмин Майер
Отзывы о книге «QT 4: программирование GUI на С++»

Обсуждение, отзывы о книге «QT 4: программирование GUI на С++» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x