Самарев Р.С. - Программирование с использованием библиотеки Qt (1075627), страница 6
Текст из файла (страница 6)
методы, которые могут быть связаны с сигналами объектов, сигналы, оповещающие о тех или иных событиях, а также виртуальные методы, которые могут быть переопределены для изменения поведения объектов. Методы, наличие которых очевидно(например конструктор), здесь опущены.МетодыQStringtext () constВозвращает текст, содержащейся в текстовом поле.QStringdisplayText () constВозвращает текст, отображаемый текстовым полем. Отличается от метода text ()тем, что в случае использования режима ввода пароля, вернет строку, содержащую символы-заменители.Слотыvoidclear ()Очищает текстовое поле.voidsetText ( const QString & )Устанавливает текстовую строку, переданную в качестве параметра.voidsetReadOnly ( bool )Устанавливает запрет (true) или разрешения (false) редактирования.
В случае запрета редактирования текст всё равно будет отображаться, а изменения значения возможнометодом setText.Оглавление36Виртуальные методы, унаследованные от QWidgetvirtual voidkeyPressEvent ( QKeyEvent * e )virtual voidkeyReleaseEvent ( QKeyEvent * e )virtual voidmouseDoubleClickEvent ( QMouseEvent * e )...Позволяют переопределить реакцию на события нажатия и отпускания клавиши,двойного щелчка мыши.virtual voidpaintEvent ( QPaintEvent * event )virtual voidresizeEvent ( QResizeEvent * e )Позволяют переопределить реакцию на события необходимости перерисовки и изменения размера, соответственно.virtual voidcontextMenuEvent ( QContextMenuEvent * event )Позволяет определить контекстное меню, вызываемое при нажатии правой клавиши мыши.СигналыvoidcursorPositionChanged ( int old, int new )Генерируется в момент изменения положения курсора в строке ввода.voideditingFinished ()Генерируется в момент, когда нажата клавиша Enter, либо текстовое поле лишилось фокуса ввода.
Следует отметить, что в случае использования средств проверки данных и ввода с использованием маски (см. документацию validator() по методамinputMask()) сигнал будет сформирован только в случае, если данные им соответствуют.Данный сигнал наиболее универсален для получения момента окончания ввода.voidreturnPressed ()Отличается от сигнала editingFinished тем, что генерируется только по нажатиюклавиши Enter.Оглавление37voidtextChanged ( const QString & text )Генерируется при любом изменении текста: ввод или удаление символов, а такжеизменение посредством метода setText().voidtextEdited ( const QString & text )В отличии от сигнала textChanged, генерируется лишь в случаях ввода или удаления символов, но не в случае программного изменения текста с помощью метода setText().Класс QTextEditПредназначен для отображения и редактирования текста, который не может бытьпредставлен в виде одной строки (рисунок 20).
Позволяет использовать как «плоскийтекст», т.е. текст, не имеющий разметки, так и текст, в котором используются разныешрифты и способы начертания символов (жирный, курсив), а также возможности оформления абзацев, списков и пр.МетодыvoidsetReadOnly ( bool ro )Устанавливает запрет (true) или разрешения (false) редактирования.QString text () constПолучить текст в формате, который использован в данный момент.QStringtoHtml () constПолучить текст с разметкой в формате HTMLQStringtoPlainText () constПолучить текст в «плоском» формате, т.
е. текст без разметки.Слотыvoidappend ( const QString & text )Добавить новую строку в конец текста. Строка будет содержать символ переводастроки.voidinsertHtml ( const QString & text )voidinsertPlainText ( const QString & text )Вставить в позицию курсора текст, содержащийся в переменной text, с разметкой вформате HTML и без разметки, соответственно.Оглавление38voidsetHtml ( const QString & text )voidsetPlainText ( const QString & text )voidsetText ( const QString & text )Установить текст в формате HTML, без разметки и с автоопределением формата,соответственно. Всё, что содержалось в текстовом поле до этого вызова будет стерто.СигналыvoidtextChanged ()Генерируется при любом изменении текста: ввод или удаление символов, а такжеизменение посредством метода setText().voidselectionChanged ()Генерируется в тот момент, когда изменяется выделенный фрагмент текста.Виртуальные методы унаследованы от QWidget и аналогичны классу QLineEdit.Класс QLabelПредназначен для отображения надписей (рисунок 20).
Используется в тех случаях,когда ввод не предусмотрен, а надпись необходимо разместить в качестве сопроводительного элемента оформления формы.МетодыQLabel ( const QString & text, QWidget * parent = 0, Qt::WindowFlags f = 0 )Конструктор, позволяющий создать надпись, содержащую текст text для виджетаparent и флагами f.QStringtext () constПолучить текст, содержащийся в надписи.СлотыvoidsetNum ( int num )voidsetNum ( double num )voidsetText ( const QString & )Установить в качестве надписи целое число, число с двойной точностью, строку,соответственно.Оглавление39Некоторые стандартные диалогиВ тех случаях, когда необходимо запросить у пользователя какой-либо параметр,возможно применение стандартных диалогов ввода, реализованных на базе класса QinputDialog.Класс имеет статические методы getDouble, getInt, getItem, getText, предназначенные для получения числа двойной точности, целого числа, строки из массива на выборпользователя, а также произвольно вводимый текст, соответственно.
Типовой пример использования данного класса выглядит следующим образом:bool ok;QString text = QInputDialog::getText(this, tr("QInputDialog::getText()"),tr("User name:"), QLineEdit::Normal,QDir::home().dirName(), &ok);if (ok && !text.isEmpty())textLabel->setText(text);Для вывода сообщений, а также получения ответов на вопросы, подразумевающиеформальные ответы типа Да/Нет существует класс QMessageBox. Класс позволяетконструировать сообщения, содержащие указанные надписи, картинку и набор клавиш,однако существуют статические методы, реализующие основные типы диалогов: about,aboutQt, critical, information, question, warning (о программе, о версии Qt, оповещение окритической ошибке, информационное сообщение, запрос на получение простого ответа,предупреждение).Типовое использование данного класса выглядит следующим образом:int ret = QMessageBox::warning(this, tr("My Application"),tr("The document has been modified.\n""Do you want to save your changes?"),QMessageBox::Save | QmessageBox::Discard| QMessageBox::Cancel,QmessageBox::Save);В этом примере будет создано окно с картинкой предупреждения, тестом о том, чтодокумент модифицирован и вопросом, что делать дальше, для чего пользователю будетпредложено нажать на одну из кнопок: QMessageBox::Save, QMessageBox::Discard,QmessageBox::Cancel (сохранить, отклонить изменения или отменить операцию).
Кнопкойпо умолчанию назначается QmessageBox::Save. Возвращаемое значение ret будет содержать код нажатой кнопки.Оглавление405.2ЗаданиеРазработать приложение, имеющее строку ввода данных, кнопку запуска преобразования и текстовое поле, предназначенное только для отображения информации. Приэтом не использовать QtDesigner! Любой текст строки ввода должен отображаться в текстовом поле сразу после завершения ввода. В начале строки должна быть вставлена пометка «input:».
При нажатии кнопки преобразования строка ввода должна быть преобразована либо в верхний регистр, либо в нижний противоположно тому, что производилось при предыдущем нажатии кнопки.Рисунок 21 – Возможный внешний вид приложенияНа рисунке 21 показан возможный внешний вид приложения после ввода строки«123 abc DEF». Сразу после окончания ввода выдана строка «input: 123 abc DEF». Послепервого нажатия кнопки «Convert» выведена строка «123 abc def», после второго - «123ABC DEF».При реализации приложения допустимо изменение выполняемых функций, обязательно сохранив реакцию на завершение ввода (сигнал editingFinished (void) ) и считывание текста из поля ввода. Кроме того, необходимо наличие реакции хотя бы на одну кнопку - сигнал click() .Схема размещения классов и функций по файлам аналогична предыдущему заданию: отдельно реализация функции main.Оглавление41Требования к отчетуОтчет должен включать изображения форм, созданных при выполнении каждогозадания, фрагмент измененного исходного кода программы в задания «калькулятор» с результатами необходимого тестирования, а также изображения формы, текст программы ирезультаты тестирования по заданию программирования простейшего ввода-вывода.Контрольные вопросы1.
Что такое Qt?ответ2. Что такое moc, uic, qmake? В каких случаях они применяются?ответ3. Какие режимы работы имеются у qmake?ответ4. Что такое сигналы и слоты?ответ5. Какие способы разработки графического интерфейса пользователя могут применяться при использовании Qt?ответ6. Как запустить начать работу с инструментальными средствами Qt?ответ7. Как разработать программу с графическим интерфейсом без использования QtDesigner?ответ8. Какие группы классов C++ предоставляет Qt?ответ9. Перечислите основные классы-контейнеры в составе Qt, которые можно применить для формирования динамических структур данных.ответ10.
Какие средства могут быть использованы в качестве справочных материалов?ответОглавление42Литература1. Бланшет Жасмин, Саммерфилд Марк. Qt 4: Программирование GUI на С++. 2-е,дополненное издание. Пер. с англ.– КУДИЦ-ПРЕСС, 2000.– 736 стр.2. Земсков Ю.В. Программирование на C++ с использованием библиотеки Qt4.–БХВ-Петербург, 20073. Макс Шлее. QT профессиональное программирование на C++.– БХВ-Петербург,2005.–544 с.4. Jasmin Blanchette, Mark Summerfield. Разработка графического интерфейса с помощью библиотеки Qt3. http://www.opennet.ru/docs/RUS/qt3_prog/index.html .– [Перевод:Андрей Киселёв]5.
Blanchette Jasmin. Mapping Many Signals to One. http://doc.trolltech.com/qq/qq10signalmapper.html.– [Перевод: http://www.crossplatform.ru/node/45]6. Документация Qt http://doc.trolltech.com/, [Перевод: http://doc.crossplatform.ru/qt/ ]Оглавление43Приложение A. Средство управления сборкой QMakeQMake является программным пакетом, входящим в состав Qt. Пакет предназначендля облегчения сборки проекта для различных платформ.