![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
sagifire |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 17 Регистрация: 5.11.2008 Пользователь №: 412 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Когда то наваял вот такой класс. Недавно решил его выложить.
Класс arkInputDialog предназначен для динамической генерации диалоговых окон. В основном используется там где надо одержать данные от пользователя, но не известно, какие именно данные будут нужные от пользователя. Класс унаследован от QDialog. Скачать | Описание Описание сейчас очень скудное, но скоро я сделаю полною документацию по методах класса. Жду Ваших отзывов и критики |
|
|
![]() |
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
[offtop]
sagifire, для тебя какой язык родной? Определенно не русский. [/offtop] |
|
|
sagifire |
![]()
Сообщение
#3
|
Студент ![]() Группа: Новичок Сообщений: 17 Регистрация: 5.11.2008 Пользователь №: 412 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Да, русский не мой родной.
Я даже в школе не учил. Если что не так написал, то скажите как буду учить ![]() |
|
|
AD |
![]()
Сообщение
#4
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Вот честно, из описания я не понял смысл этого класса, а разбирать пример - времени нет. В чем суть класса? Если что, то можно по английски - поймем!
![]() |
|
|
sagifire |
![]()
Сообщение
#5
|
Студент ![]() Группа: Новичок Сообщений: 17 Регистрация: 5.11.2008 Пользователь №: 412 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Суть класса в том чтоб при помощи кода бистро получить диалог, не тратя время на дизайн.
Вот простой пример как получить диалог логина для ДБ: arkInputDialog dlg(this,Qt::Dialog); dlg.setWindowTitle("Login:"); dlg.addString("Host:"); dlg.addInteger("Port:",8080); dlg.addString("Name:"); dlg.AddPasword("Pasword:"); dlg.prepare(); if(dlg.exec()==QDialog::Accepted){ QString host = dlg.getValue(0).toString(); QString port = dlg.getValue(1).toString(); QString name = dlg.getValue(2).toString(); QString password = dlg.getValue(3).toString(); } Чтоб восстанавливать ранее введение данные при каждом новым запуском нужно перед prepare() вставить строку dlg.setSettings("компания","продукт","дескриптор"); |
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
В основном используется там где надо одержать данные от пользователя, но не известно, какие именно данные будут нужные от пользователя. вот это предложение не понятно, а именно выделенные слова не сочитаются с их соседями.Да, русский не мой родной. а какой родной? у меня почему-то в голове крутится болгарский (не знаю почему)
|
|
|
sagifire |
![]()
Сообщение
#7
|
Студент ![]() Группа: Новичок Сообщений: 17 Регистрация: 5.11.2008 Пользователь №: 412 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
В основном используется там где надо получить данные от пользователя, но не известно, какие именно данные будут нужны от пользователя.
Родной язык Украинский |
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#9
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
В основном используется там где надо получить данные от пользователя, но не известно, какие именно данные будут нужны от пользователя. зачёт по-русскому ![]() на зачет потянет, хотя второй раз писать "от пользователя" речевая ошибка. На да бог с ним - все не без греха ![]() Кошмар конечно через лет 10 без переводчика не обойтись. ![]() sagifire, не считаешь что класс мягко говоря - лишний наворот??? QDialog и так справляется со своими обязанностями прекрасно. |
|
|
sagifire |
![]()
Сообщение
#10
|
Студент ![]() Группа: Новичок Сообщений: 17 Регистрация: 5.11.2008 Пользователь №: 412 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Этот класс я написал для себя, чтоб не рисовать 150 простейших диалогов для каждого проекта.
sagifire, не считаешь что класс мягко говоря - лишний наворот??? QDialog и так справляется со своими обязанностями прекрасно. arkInputDialog и єсть QDialog. Только с механизмом автодизайна и сохранением/восстановлением данных через QSettings. Для примера вот код: arkInputDialog dlg(this,Qt::Dialog); dlg.setWindowTitle("Login:"); dlg.addString("Name:"); dlg.AddPasword("Pasword:"); dlg.prepare(); dlg.setSettings("trollytech","megatoolza","login_form"); if(dlg.exec() ... В диалоге будет всегда восстанавливаться последнее имя пользователя. Итого 7 строк кода без использования дизайнера. А сколько строк кода нужно на простом QDialog ? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#11
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
sagifire, предлагаю сделать описание в стиле документации Qt. Буквально взять файл с описанием QDialog и его подправить под свой класс.
либо воспользоватся DoxyGen'ом |
|
|
sagifire |
![]()
Сообщение
#12
|
Студент ![]() Группа: Новичок Сообщений: 17 Регистрация: 5.11.2008 Пользователь №: 412 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#13
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Этот класс я написал для себя, чтоб не рисовать 150 простейших диалогов для каждого проекта. sagifire, не считаешь что класс мягко говоря - лишний наворот??? QDialog и так справляется со своими обязанностями прекрасно. arkInputDialog и єсть QDialog. Только с механизмом автодизайна и сохранением/восстановлением данных через QSettings. Для примера вот код: arkInputDialog dlg(this,Qt::Dialog); dlg.setWindowTitle("Login:"); dlg.addString("Name:"); dlg.AddPasword("Pasword:"); dlg.prepare(); dlg.setSettings("trollytech","megatoolza","login_form"); if(dlg.exec() ... В диалоге будет всегда восстанавливаться последнее имя пользователя. Итого 7 строк кода без использования дизайнера. А сколько строк кода нужно на простом QDialog ? не хочу в спор вступать но.... в ряде случаев нельзя измерять удобство колличетвом строк. не совсем в тему - к примеру программу губит дохлый цикл в одну строчку. дизайнером к примеру я оч редко пользуюсь, вообще не люблю мышкой программировать. вопросов нет, 7 строк - клево. однако вот скажет мне ну или тебе начальник, а хуже если заказчик что-нить изменить в нем. К примеру, горизонтальное размещение сменить на вертикальное или наоборот + добавить картинку слева вверху. еще вопрос Имя файла: arkInputDialog.zip Размер файла: 2.45 MB чего так много то мегабайтов??? Сообщение отредактировал kwisp - 26.12.2008, 17:56 |
|
|
sagifire |
![]()
Сообщение
#14
|
Студент ![]() Группа: Новичок Сообщений: 17 Регистрация: 5.11.2008 Пользователь №: 412 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
не хочу в спор вступать но.... в ряде случаев нельзя измерять удобство колличетвом строк. программу губит дохлый цикл в одну строчку. С этим я согласен вопросов нет 7 строк - клево. однако вот скажет мне ну или тебе начальник, а хуже если заказчик что-нить изменить в нем. К примеру, горизонтальное размещение сменить на вертикальное или наоборот + добавить картинку слева вверху. Горизонтальное размещение сменить на вертикальное нет проблем: prepare (int количество_столбцов); Картинку теоретически можно добавить после вызова метода prepare (). на практике не проверял Имя файла: arkInputDialog.zip Размер файла: 2.45 MB чего так много то мегабайтов??? Там кроме библиотеки еще пример использования. В коде показано два наглядных способа использования диалога. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#15
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
sagifire |
![]()
Сообщение
#16
|
Студент ![]() Группа: Новичок Сообщений: 17 Регистрация: 5.11.2008 Пользователь №: 412 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#17
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kwisp |
![]()
Сообщение
#18
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
вот другое дело. однако. просил критики. так на вскидку взглянул. функция prepare(). опасно тем что юный юзверь вызовет её несколько раз. плохо получится. кнопки будут создаваться и т.д. и т.п. так ведь? данные открыты в PUBLIC зачем? есть возможность спрячь по дальше.
есть член класса указатель на виджет widget.... и тут же в методе
ты создаешь одноименный.... к ошибке не приводит ... но практика для переносимого кода для использования сторонними лицами нехорошая. не знаю как поведут себя различные компиляторы.
что то мне не понятное??? почему не switch() он же шустрее будет.
еще вопрос зачем класс arkInpDlgItem??? если он нужн только для предоставления данных при том открытых. может обойтись структурой и спрятать её от пользователя.... если он непосредственно не пользуется классом arkInpDlgItem. |
|
|
sagifire |
![]()
Сообщение
#19
|
Студент ![]() Группа: Новичок Сообщений: 17 Регистрация: 5.11.2008 Пользователь №: 412 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо! Вот такая критика мне и была нужна.
Согласен со всем, буду исправлять. функция prepare(). опасно тем что юный юзверь вызовет её несколько раз. плохо получится. кнопки будут создаваться и т.д. и т.п. так ведь? По идеи метод prepare() перед созданием виджетов, должен был удалять старые. Почему я не реализыровал это? Потому что просто забыл ![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#20
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 11.7.2025, 15:04 |