Диалоговое окно ввода QInputDialog


Диалоговое окно ввода данных можно использовать для предоставления пользователю возможности ввода строки или числа. Это окно реализовано в классе QInputDialog. Конечно, можно и самому написать нечто подобное, разместив в диалоговом окне виджет класса QLineEdit, но зачем это делать, когда есть готовый класс? Для более сложных диалоговых окон, имеющих более одного поля ввода, этот класс уже не подойдет и придется реализовывать свой собственный.

Для отображения диалогового окна ввода класс QInputDialog предоставляет четыре статических метода:

  • getText() — для текста или пароля;
  • getInteger() — для ввода целых чисел;
  • getDouble() — для ввода чисел с плавающей точкой двойной точности;
  • getItem() — для выбора элемента из списка строк.

В эти методы первым параметром передается указатель на виджет предка, вторым — заголовок диалогового окна. Третий параметр — поясняющий текст, который будет отображен рядом с полем ввода. Начиная с четвертого, параметры этих методов отличаются друг от друга. В методах getInteger() и getDouble() четвертым передается значение для инициализации (по умолчанию равно нулю), пятым — минимально возможное (по умолчанию равно -2147483647), шестым — максимально возможное (по умолчанию равно 2147483647). Четвертый параметр метода getText() управляет режимом ввода паролей, пятым параметром передается текст для инициализации (по умолчанию это пустая строка). В четвертом параметре метода getItem() передается список строк (QStringList), пятый параметр задает одну из переданных строк текущей (по умолчанию — первая строка), шестой параметр управляет режимом возможности редактирования строк (по умолчанию включен). Два последних параметра у методов — аналогичные: это указатель на переменную булевого типа, информирующую о кнопке, нажатой при закрытие окна – Ok или Cancel (Отмена), и флаги окна.

Создание диалогового окна ввода

Отобразить диалоговое окно ввода текста можно следующим образом:


bool bOk; 
QString str = QInputDialog::getText( 0, 
                                     "Input",
                                     "Name:", 
                                     QLineEdit::Normal, 
                                     "Tarja", 
                                     &bOk 
                                    ); 
if (!bOk) { 
    // Была нажата кнопка Cancel 
}

Изменив четвертый параметр с QLineEdit::Normal на QLineEdit::Password, мы тем самым установим виджет однострочного текстового поля в режим ввода пароля.

Читать далее: Диалоговое окно прогресса в Qt