Главная » Просмотр файлов » Создание графических интерфейсов пользователя с использованием Qt 5.12

Создание графических интерфейсов пользователя с использованием Qt 5.12 (1245345), страница 11

Файл №1245345 Создание графических интерфейсов пользователя с использованием Qt 5.12 (Методические пособия по C++ Г.С.Иванова 3 части) 11 страницаСоздание графических интерфейсов пользователя с использованием Qt 5.12 (1245345) страница 112021-07-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 11)

При создании интерфейсов достаточно часто возникает необходимость вывода на экран табличных данных. Библиотека Qt с этойцелью предоставляет специальный класс QTableWidget. Объект этого класса – таблица,каждая ячейка которой – объект класса QTableWidgetItem (рисунок 2.22).QWidgetQTableWidgetItemprintFormQTableWidgetprintForm()showAll()showResults()QPushButtomабРисунок 2.22 - Внешний вид (а) и диаграмма классов (б) формы вывода записей на экранОба класса предлагают большое количество методов, позволяющих создавать наэкране таблицы с текстовой и графической информацией, а также выводить и вводить изних данные [21].

В рассматриваемом примере таблица используется только для выводарезультатов, поэтому объекты класса ячейки создаются с флагами Qt::NoItemFlags,запрещающими не только изменение, но и выделение ячеек.Описание класса помещаем в файл printForm.h:#ifndef printForm_h#define printForm_h#include "bookFile.h"#include <QTableWidget>#include <QPushButton>class printForm : public QWidget{QTextCodec *codec;QTableWidget *table; // таблицаQPushButton *btnExit;void showRow(int i,recType r);// вывод строки таблицыpublic:printForm();// конструкторvoid showAll(); // показать все записиvoid showResults(recType r1); // показать результаты поиска};#endifРеализацию методов помещаем в файл printForm.cpp:#include "printForm.h"#include "mainForm.h"#include <QHBoxLayout>#include <QMessageBox>printForm::printForm(){codec = QTextCodec::codecForName("Windows-1251");this->setWindowTitle(RUS("Результат"));QStringList strlist; // объект Список строкstrlist << RUS("Фамилия")<< RUS("Имя")<< RUS("Телефон"); // записываем строки заголовкаtable = new QTableWidget(10,3,this); // создаем таблицуtable->setHorizontalHeaderLabels(strlist);// включаем// заголовокQHBoxLayout *layoutG2 = new QHBoxLayout();btnExit=new QPushButton(RUS("Назад"), this);layoutG2->addWidget(btnExit);QVBoxLayout *layout = new QVBoxLayout(this);layout->addWidget(table);layout->addLayout(layoutG2);connect(btnExit, SIGNAL(clicked(bool)),this,SLOT(close()));}void printForm::showRow(int i,recType r){QTableWidgetItem *item; // элемент таблицыitem = new QTableWidgetItem(); // создаем элементitem->setFlags(Qt::NoItemFlags);//запрещаем// выделениеitem->setText(r.fam);// записываем текстtable->setItem(i,0,item);// привязываем элемент// к таблицеitem = new QTableWidgetItem();// создаем элементitem->setFlags(Qt::NoItemFlags); //запрещаем// выделениеitem->setText(r.name);table->setItem(i,1,item); // привязываем элементitem = new QTableWidgetItem();// создаем элементitem->setFlags(Qt::NoItemFlags); //запрещаем// выделениеitem->setText(r.nom); // записываем текстtable->setItem(i,2,item); // привязываем элемент}void printForm::showAll(){bookFile book;if (!book.readRec()){// если файл пустой , то создаем сообщениеQMessageBox msg(QMessageBox::Critical,RUS("Нет данных"),RUS("База пуста"),QMessageBox::Ok,0);msg.exec(); // выводим сообщение}else{// иначе - выводим таблицу по строкамshowRow(0,book.r);int i=0;while (book.readRec())showRow(++i,book.r);table->setRowCount(i+1);resize(350,330);show();}}void printForm::showResults(recType r1){bookFile book;book.f->reset();if (!book.findFirst(r1)){// если данные не найдены, то создаем сообщениеQMessageBox msg(QMessageBox::Critical,RUS("Нет данных"),RUS("Данные не найдены"),QMessageBox::Ok,0);msg.exec();}else{// иначе - выводим результаты по строкамshowRow(0,book.r);int i=0;while (book.findNext(r1))showRow(++i,book.r);table->setRowCount(i+1);resize(350,200);show();}}Класс формы поиска.

По структуре форма поиска аналогична форме ввода, поэтому их классы имеют одинаковую структуру (рисунок 2.23).QWidgetfindFormQLabelQLineEditfindForm()findRecs()QPushButtomабРисунок 2.23. Внешний вид и диаграмма классов формы поискаОписание класса поместим в файл findForm.h:#ifndef findForm_h#define findForm_h#include <QLabel>#include "printForm.h"class findForm : public QWidget{Q_OBJECTQLabel * family,* name;QLineEdit * familyEdit,* nameEdit;QPushButton * btnFind, * btnExit;printForm winPrint;public:findForm();// конструкторpublic slots:void findRecs(); // метод поиска записей};#endifРеализацию методов помещаем в файл findForm.сpp:#include "findForm.h"#include "bookFile.h"#include <QVBoxLayout>#include <QLineEdit>#include <QTextCodec>#define RUS(str) codec->toUnicode(str)findForm::findForm(){QTextCodec *codec =QTextCodec::codecForName("Windows-1251");this->setWindowTitle(RUS("Поиск записей"));QVBoxLayout *layoutV1 = new QVBoxLayout();family=new QLabel(RUS("Фамилия"), this);name=new QLabel(RUS("Имя"), this);layoutV1->addWidget(family);layoutV1->addWidget(name);QVBoxLayout *layoutV2 = new QVBoxLayout();familyEdit=new QLineEdit(RUS(""), this);nameEdit=new QLineEdit(RUS(""), this);layoutV2->addWidget(familyEdit);layoutV2->addWidget(nameEdit);QHBoxLayout *layoutG1 = new QHBoxLayout();layoutG1->addLayout(layoutV1);layoutG1->addLayout(layoutV2);QHBoxLayout *layoutG2 = new QHBoxLayout();btnFind=new QPushButton(RUS("Найти"), this);btnExit=new QPushButton(RUS("Назад"), this);layoutG2->addWidget(btnFind);layoutG2->addWidget(btnExit);QVBoxLayout *layout = new QVBoxLayout(this);layout->addLayout(layoutG1);layout->addLayout(layoutG2);connect(btnFind, SIGNAL(clicked(bool)),this,SLOT(findRecs()));connect(btnExit, SIGNAL(clicked(bool)),this,SLOT(close()));}void findForm::findRecs(){recType r; // параметры поискаr.fam=familyEdit->text();r.name=nameEdit->text();winPrint.showResults(r);}Основная программа.

Основная программа данного приложения создаетприложение, визуализирует главное окно и передает передает управление циклуобработки сообщений:#include "mainForm.h"#include <QApplication>int main(int argc, char *argv[]){QApplication appl(argc,argv);Window win;win.show();return appl.exec();}Сборка приложения может осуществляться как в консольном режиме, так и в средахQt Creator или Visual Studio.ЛИТЕРАТУРА1. Шлее М. Qt 5.3.

Профессиональное программирование на С++. – СПб.: БХВПетербург, 2015.ПРИЛОЖЕНИЕ А. УСТАНОВКА QT НА КОМПЬЮТЕРДля установки библиотеки Qt необходимо скачать инсталляционные модули с сайтаразработчика https://www.qt.io/download.Фирма предлагает установить коммерческий продукт или продукт Open Source.Установка при этом выполняется с помощью Online-инсталлятора. Возможна и установкаOffline, что предпочтительно, поскольку иначе процесс установки может растянуться начасы.

Для получения доступа к скачиванию Qt для автономной установки необходимо использовать адрес https://www.qt.io/offline-installers.Комплект средств разработки Qt SDK существуют для 32-х и 64-х разрядных Windows, Linux, Mac OS X и др. Он включает собственно библиотеку Qt, бесплатный компилятор С++ minGW и бесплатную интегрированную среду создания приложений Qt Creator.Нужные компоненты можно выбрать в процессе установки выбранной версии Qt (рисунокA.1).Рисунок A.1 – Выбор компонентов при установке Qt 5.12.1Для создания Qt приложений с использованием среды Microsoft Visual Studio2017 Community необходимо выбрать соответственно 32-х или 64-х разрядный вариантQt под MSVC, установить его, а затем установить специальный Qt-плагин для VS 2017.Для этого в VS 2017 выбираем пункт меню:Средства/Расширения и обновления/В сети/Поиск/Qt .Среди найденных в сети компонентов выбираем плагин Qt Visual Studio Tools, который необходимо скачать и установить.

Плагин встраивается в среду, добавляя специальные пункты в меню, и позволяет создавать и отлаживать приложения Qt разных типовнепосредственно в среде Visual Studio 2017.Для работы с Qt в командном режиме на компьютере должна быть установлена: для работы с Visual C++ – библиотека Qt MSVC 2017; для работы с бесплатным компилятором С++ minGW – библиотека MinGW.В первом случае естественно также должна быть установлена среда Visual Studio2017 Community, а во втором – средства компиляции, сборки и отладки С++ из GNU Compiler Collection (это можно сделать, выбрав соответствующий инструмент при установкеQt).Для работы с Qt в среде Qt Creator на компьютер необходимо установить Qt Creator вместе со средствами отладки программ (Qt Creator CBD Debugger).Русскоязычный вариант справочной системы (к сожалению, только для QT 4)можно взять на сайте http://doc.crossplatform.ru/qt/.

Описание основных классов при переходе к следующей версии не изменилось, поэтому этот перевод упрощает работу с библиотекой..

Характеристики

Тип файла
PDF-файл
Размер
6,43 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6376
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее