crossplatform.ru

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


  Ответ в arkInputDialog
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 27.12.2008, 15:58
 
Цитата(sagifire @ 27.12.2008, 18:00) *
реализыровал
реализовал
sagifire Дата 27.12.2008, 15:00
  Спасибо! Вот такая критика мне и была нужна.

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


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


По идеи метод prepare() перед созданием виджетов, должен был удалять старые.
Почему я не реализыровал это? Потому что просто забыл :scratch_one-s_head: .
kwisp Дата 26.12.2008, 18:48
 
Цитата(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.
Litkevich Yuriy Дата 26.12.2008, 18:28
 
Цитата(sagifire @ 26.12.2008, 21:17) *
Новой пример 13кб
вот это другое дело!
sagifire Дата 26.12.2008, 18:17
  Новой пример 13кб
Litkevich Yuriy Дата 26.12.2008, 18:09
 
Цитата(sagifire @ 26.12.2008, 21:03) *
Там кроме библиотеки еще пример использования. В коде показано два наглядных способа использования диалога.
выкини каталоги:
bin\
build\
они не нужны а занимают 12 МиБ
sagifire Дата 26.12.2008, 18:03
 
Цитата(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
чего так много то мегабайтов???


Там кроме библиотеки еще пример использования. В коде показано два наглядных способа использования диалога.
kwisp Дата 26.12.2008, 17:55
 
Цитата(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
чего так много то мегабайтов???
sagifire Дата 26.12.2008, 17:43
 
Цитата(Litkevich Yuriy @ 26.12.2008, 16:40) *
sagifire, предлагаю сделать описание в стиле документации Qt. Буквально взять файл с описанием QDialog и его подправить под свой класс.

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


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

либо воспользоватся DoxyGen'ом
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 1.5.2024, 1:10