crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> arkInputDialog, Класс класс arkInputDialog для генерации диалогов
Litkevich Yuriy
  опции профиля:
сообщение 26.12.2008, 17:40
Сообщение #11


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


sagifire, предлагаю сделать описание в стиле документации Qt. Буквально взять файл с описанием QDialog и его подправить под свой класс.

либо воспользоватся DoxyGen'ом
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
sagifire
  опции профиля:
сообщение 26.12.2008, 17:43
Сообщение #12


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 5.11.2008
Пользователь №: 412

Спасибо сказали: 0 раз(а)




Репутация:   1  


Цитата(Litkevich Yuriy @ 26.12.2008, 16:40) *
sagifire, предлагаю сделать описание в стиле документации Qt. Буквально взять файл с описанием QDialog и его подправить под свой класс.

либо воспользоватся DoxyGen'ом


К новому году сделаю :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 26.12.2008, 17:55
Сообщение #13


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(sagifire @ 26.12.2008, 17:31) *
Этот класс я написал для себя, чтоб не рисовать 150 простейших диалогов для каждого проекта.


Цитата(kwisp @ 26.12.2008, 16:14) *
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
  опции профиля:
сообщение 26.12.2008, 18:03
Сообщение #14


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 5.11.2008
Пользователь №: 412

Спасибо сказали: 0 раз(а)




Репутация:   1  


Цитата(kwisp @ 26.12.2008, 16:55) *
не хочу в спор вступать но.... в ряде случаев нельзя измерять удобство колличетвом строк. программу губит дохлый цикл в одну строчку.


С этим я согласен

Цитата(kwisp @ 26.12.2008, 16:55) *
вопросов нет 7 строк - клево. однако вот скажет мне ну или тебе начальник, а хуже если заказчик что-нить изменить в нем. К примеру, горизонтальное размещение сменить на вертикальное или наоборот + добавить картинку слева вверху.


Горизонтальное размещение сменить на вертикальное нет проблем: prepare (int количество_столбцов);
Картинку теоретически можно добавить после вызова метода prepare (). на практике не проверял

Цитата(kwisp @ 26.12.2008, 16:55) *
Имя файла: arkInputDialog.zip Размер файла: 2.45 MB
чего так много то мегабайтов???


Там кроме библиотеки еще пример использования. В коде показано два наглядных способа использования диалога.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.12.2008, 18:09
Сообщение #15


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(sagifire @ 26.12.2008, 21:03) *
Там кроме библиотеки еще пример использования. В коде показано два наглядных способа использования диалога.
выкини каталоги:
bin\
build\
они не нужны а занимают 12 МиБ
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
sagifire
  опции профиля:
сообщение 26.12.2008, 18:17
Сообщение #16


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 5.11.2008
Пользователь №: 412

Спасибо сказали: 0 раз(а)




Репутация:   1  


Новой пример 13кб
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.12.2008, 18:28
Сообщение #17


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(sagifire @ 26.12.2008, 21:17) *
Новой пример 13кб
вот это другое дело!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 26.12.2008, 18:48
Сообщение #18


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(sagifire @ 26.12.2008, 18:17) *


вот другое дело.
однако.
просил критики. так на вскидку взглянул.

функция prepare().
опасно тем что юный юзверь вызовет её несколько раз. плохо получится. кнопки будут создаваться и т.д. и т.п.
так ведь?

данные открыты в PUBLIC зачем? есть возможность спрячь по дальше.
QString label;
QVariant value;
QWidget *widget;
int group;


есть член класса указатель на виджет widget.... и тут же в методе
void arkInputDialog::addString(const QString &label, const QString &value)
{
    QLineEdit *widget=new QLineEdit(this);
    ....
}

ты создаешь одноименный.... к ошибке не приводит ... но практика для переносимого кода для использования сторонними лицами нехорошая. не знаю как поведут себя различные компиляторы.

if(val.type()==QVariant::Bool){
                QCheckBox *wdg=static_cast<QCheckBox*>(items.value(index)->widget);
                wdg->setChecked(val.toBool());
                items.value(index)->value=val;
            }
            if(val.type()==QVariant::Double){
                QDoubleSpinBox *wdg=static_cast<QDoubleSpinBox*>(items.value(index)->widget);
                wdg->setValue(val.toDouble());
                items.value(index)->value=val;
            }
            if(val.type()==QVariant::Int){
                QSpinBox *wdg=static_cast<QSpinBox*>(items.value(index)->widget);
                wdg->setValue(val.toInt());
                items.value(index)->value=val;
            }
            if(val.type()==QVariant::Date){
                QDateEdit *wdg=static_cast<QDateEdit*>(items.value(index)->widget);
                wdg->setDate(val.toDate());
                items.value(index)->value=val;
            }
            if(val.type()==QVariant::String){
                QLineEdit *wdg=static_cast<QLineEdit*>(items.value(index)->widget);
                wdg->setText(val.toString());
                items.value(index)->value=val;
            }
            if(val.type()==QVariant::StringList){
                QComboBox *wdg=static_cast<QComboBox*>(items.value(index)->widget);
                wdg->setCurrentIndex(wdg->findText(val.toString()));
                items.value(index)->value=val;
            }

что то мне не понятное???
почему не switch() он же шустрее будет.
int t = val.type();
switch(t){
...
}



еще вопрос
зачем класс arkInpDlgItem???

если он нужн только для предоставления данных при том открытых. может обойтись структурой и спрятать её от пользователя.... если он непосредственно не пользуется классом arkInpDlgItem.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
sagifire
  опции профиля:
сообщение 27.12.2008, 15:00
Сообщение #19


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 5.11.2008
Пользователь №: 412

Спасибо сказали: 0 раз(а)




Репутация:   1  


Спасибо! Вот такая критика мне и была нужна.

Согласен со всем, буду исправлять.


Цитата(kwisp @ 26.12.2008, 18:48) *
функция prepare().
опасно тем что юный юзверь вызовет её несколько раз. плохо получится. кнопки будут создаваться и т.д. и т.п.
так ведь?


По идеи метод prepare() перед созданием виджетов, должен был удалять старые.
Почему я не реализыровал это? Потому что просто забыл :scratch_one-s_head: .
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.12.2008, 15:58
Сообщение #20


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(sagifire @ 27.12.2008, 18:00) *
реализыровал
реализовал
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


10 чел. читают эту тему (гостей: 10, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2024, 18:26