Класс QLineEdit

   
На этом шаге рассмотрим класс QLineEdit однострочного текстового поля.

   
Группа виджетов элементов ввода представляет собой основу для ввода и редактирования данных — текста и чисел — пользователем. Большая часть элементов ввода может работать с буфером обмена и поддерживает технологию перетаскивания (drag & drop), что избавляет разработчика от дополнительной реализации. Текст можно выделять с помощью мыши, клавиатуры и контекстного меню.

   
Этот виджет является самым простым элементом ввода. Класс QLineEdit однострочного текстового поля определен в заголовочном файле QLineEdit.

   
Текстовое поле состоит из прямоугольной области для ввода строки текста, поэтому не следует использовать этот виджет в тех случаях, когда требуется вводить более одной строки текста. Для ввода многострочного текста имеется класс QTextEdit.

   
Текст, находящийся в виджете, возвращает метод text(). Если содержимое виджета изменилось, то отправляется сигнал textChanged(). Сигнал returnPressed() уведомляет о нажатии пользователем клавиши Enter.

   
Вызов метода setReadOnly() с параметром true устанавливает режим "только для чтения", в котором пользователь может только просматривать текст, но не редактировать. Текст для инициализации виджета можно передать в слот setText().

   
Для однострочного текстового поля можно включить режим ввода пароля, который устанавливается вызовом метода setEchoMode() с флагом Password. В результате этого вводимые символы не отображаются, а заменяются символом *.

   
Окно программы, показанное на рис. 1, имеет два однострочных поля, одно из которых установлено в режим ввода пароля. Вводимый в это поле текст отображается в виджете надписи.


Рис.1. Пример однострочных полей ввода

   
В листинге приводится текст файла приложения, окно которого показано на рис. 1:

#include <QApplication>
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QVBoxLayout>
int main (int argc, char** argv)
{
    QApplication app(argc, argv);
    app.setApplicationDisplayName("Однострочные поля ввода");
    QWidget wgt;
    //создается виджет надписи (указатель plDisplay)
    QLabel* plDisplay = new QLabel;
    //метод setFrameStyle() устанавливает стиль рамки
    plDisplay->setFrameStyle(QFrame::Box | QFrame::Raised);
    //метод setLineWidth() устанавливает толщину рамки
    plDisplay->setLineWidth(2);
    //высота виджета надписи фиксируется с помощью метода setFixedHeight()
    plDisplay->setFixedHeight(50);
    //создается виджет надписи (указатель plText)
    QLabel* plText = new QLabel("&Текст:");
    //создается виджет однострочного текстового
    //поля ввода (указатель pleText)
    QLineEdit* pleText = new QLineEdit;
    //надпись plText связывается с виджетом однострочного
    //текстового поля методом setBuddy()
    plText->setBuddy(pleText);
    //сигнал textChanged() виджета текстового поля pleText
    //соединяется со слотом setText() виджета надписи
    //plDisplay для отображения вводимого текста
    QObject::connect(pleText, SIGNAL(textChanged(const QString&)),
                     plDisplay, SLOT(setText(const QString&)));
    QLabel* plPassword = new QLabel("&Пароль:");
    QLineEdit* plePassword = new QLineEdit;
    plPassword->setBuddy(plePassword);
    plePassword->setEchoMode(QLineEdit::Password);
    QObject::connect(plePassword, SIGNAL(textChanged(const QString&)),
                     plDisplay, SLOT(setText(const QString&)));
    //виджеты размещаются вертикально при помощи
    //объекта класса QVBoxLayout
    QVBoxLayout* pvbxLayout = new QVBoxLayout;
    pvbxLayout->addWidget(plDisplay);
    pvbxLayout->addWidget(plText);
    pvbxLayout->addWidget(pleText);
    pvbxLayout->addWidget(plPassword);
    pvbxLayout->addWidget(plePassword);
    wgt.setLayout(pvbxLayout);
    wgt.show();
    return app.exec();
}

   
Файлы приложения можно взять Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий