Russian Qt Forum

Qt => Вопросы новичков => Тема начата: stanukih от Апрель 19, 2016, 11:43



Название: передать форме данные при создании
Отправлено: stanukih от Апрель 19, 2016, 11:43
Разрабатываю приложение для работы с бд (MySQL). Данные должны быть представлены в разном виде в зависимости от значений одного поля. Главная форма mainwindows.cpp используется для соединения с базой (авторизация). Планировал сделать следующее - после успешной авторизации считываются все данные. При проходе по ним открывается соответствующая форма. Требуется ей передать данные ключ к запись бд которую нужно показать. Как передать этот параметр при открытии формы?


Название: Re: передать форме данные при создании
Отправлено: kambala от Апрель 19, 2016, 12:10
в конструкторе передавать например


Название: Re: передать форме данные при создании
Отправлено: stanukih от Апрель 19, 2016, 17:57
Не получается, ошибка ошибка: default argument missing for parameter 2 of 'standart::standart(QWidget*, int)' explicit standart(QWidget *parent = 0, int ok);



Название: Re: передать форме данные при создании
Отправлено: Old от Апрель 19, 2016, 17:59
Не получается, ошибка ошибка: default argument missing for parameter 2 of 'standart::standart(QWidget*, int)' explicit standart(QWidget *parent = 0, int ok);
Вам нужно подучить C++.
Параметры с значениями по умолчанию должны всегда идти после обязательных параметров. Поменяйте местами QWidget* и int.


Название: Re: передать форме данные при создании
Отправлено: stanukih от Апрель 19, 2016, 18:10
Цитировать
Параметры с значениями по умолчанию должны всегда идти после обязательных параметров. Поменяйте местами QWidget* и int.
Спасибо теперь то что я и хотел.

Цитировать
Вам нужно подучить C++
Полностью согласен - стараюсь учить во время написания, на простое чтение книг нет ни времени, ни желания.


Название: Re: передать форме данные при создании
Отправлено: Alex Custov от Апрель 19, 2016, 18:45
Полностью согласен - стараюсь учить во время написания

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


Название: Re: передать форме данные при создании
Отправлено: Old от Апрель 19, 2016, 18:50
Самый непродуктивный способ изучения языка, которым и пользуются все новички.
Да еще и с Qt его учить совсем плохо. Qt навязывает определенные подходы, рамки.


Название: Re: передать форме данные при создании
Отправлено: Bepec от Апрель 19, 2016, 19:04
А можно примеры подходов и рамок?
PS вдруг у меня они таки висят.


Название: Re: передать форме данные при создании
Отправлено: Old от Апрель 19, 2016, 19:17
А можно примеры подходов и рамок?
PS вдруг у меня они таки висят.
Неумение правильно управлять памятью (надежда на удаление объектов parentом);
Неумение использовать множественное наследование;
Примеры Qt часто смешивают GUI и функционал (для примеров это нормально, но обучаемый начинает использовать такой же подход и в нормальных проектах).
Навязывается готовое дерево классов, а для обсучения полезней прорабатывать свои деревья.
При изучении ООП нужно учиться выделять сущности, их анализировать, описывать взаимодействия между объектами, а Qt дает все готовое.
По хорошему, при изучении ООП, хорошо писать какие нибудь симуляторы, где множество разных объектов взаимодействуют друг с другом. Тогда и C++ получится использовать полноценно, а не как C с вектором.


Название: Re: передать форме данные при создании
Отправлено: Bepec от Апрель 19, 2016, 19:51
Кхм. Разве что множественное наследование пойдёт в копилку. Всё остальное не катит :D


Название: Re: передать форме данные при создании
Отправлено: Igors от Апрель 20, 2016, 11:39
Действительно, как должно выглядеть "изучение языка"? Чтение книг? Ну это вряд ли - лично у меня половина энтузиазма испаряется уже после перелистывания обильного предисловия (благодарностей и.т.п.). Дальше идут довольно прописные истины, в лучшем случае пример на гнусной жабе, в который мне мучительно трудно вникнуть. И дело кончается типа "эхх.. да ладно..."

Другие упорно поглощают весь "синтаксический сахар", обычно злоупотребляя std. Лямбды, const_expr, сомнительная любовь к итераторам и.т.п. - все это немедленно добавляется в арсенал. Воспользоваться какой-то замшелой ф-цией std - дело чести. В рез-те код настолько "заджазован" что понять его мудрено.

И все-таки "учить язык по ходу дела, осваивая Qt" - несомненно худший вариант. Конечно читать доку (букварь) программист обязан, без этого не обойтись, но это очень слабо связано со знанием языка, здесь упор на "полезные вещи" быстро приносящие практический рез-т (вызов готового класса). Плохо то что очень быстро у человека формируется стойкое убеждение: всегда и везде "надо пользоваться готовым", на свои решения он не способен. Ведь он никогда ничего и не проектировал, никаких классов не сочинял (только "формы"),  переписывал примеры - и все. Впрочем "а был ли мальчик" - ведь сейчас программирование модно, и многие идут в него совсем не по призванию. 

Конечно легко советовать, мол, "ты сначала плюсы подучи, а потом с Qt благодать" - считаю это совершенно верно. Но неясно что человеку делать, ведь он не может оказаться в моем времени когда ничего не было и приходилось копошиться самому. "Поработай сначала c char *, а потом уж говнокодь с QString" - мудрый совет, но вряд ли многие будут ему следовать.


Название: Re: передать форме данные при создании
Отправлено: Smogg от Май 05, 2016, 23:32
Самый непродуктивный способ изучения языка, которым и пользуются все новички.
Да еще и с Qt его учить совсем плохо. Qt навязывает определенные подходы, рамки.
Этточно. После Кьюта чистый цпп  - сплошное самоиздевательство) Но кьютовый цпп вне Кьюта и не существует) Такая вот дилемма


Название: Re: передать форме данные при создании
Отправлено: Racheengel от Май 06, 2016, 00:00
Полностью согласен - стараюсь учить во время написания

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

А есть другие варианты кроме learning by doing?
Писать продакшен код всяко лучше вместо того, чтобы говнокодить абстрактную муйню по примерам из книжек.


Название: Re: передать форме данные при создании
Отправлено: Smogg от Май 06, 2016, 01:07
А есть другие варианты кроме learning by doing?
Писать продакшен код всяко лучше вместо того, чтобы говнокодить абстрактную муйню по примерам из книжек.
Глупость брякнули, право) Сначала learning, а уж потом doing. Как говаривал Ницше: "Лишь построив дом научаешься тому, что должен был знать с самого начала". Научится-то научился, но дом-то уже построен!


Название: Re: передать форме данные при создании
Отправлено: Bepec от Май 06, 2016, 03:19
Попробуйте современные учебники с примерами по C++. Такой мути я не видел со школьной скамьи. Мало того, 60% материала откровенно не нужного. Из целых разделов можно убрать всё кроме пары глав - и вообще ничего не изменится :D

PS если уж и учить, то по страуструпу :D


Название: Re: передать форме данные при создании
Отправлено: Racheengel от Май 06, 2016, 15:50
А есть другие варианты кроме learning by doing?
Писать продакшен код всяко лучше вместо того, чтобы говнокодить абстрактную муйню по примерам из книжек.
Глупость брякнули, право) Сначала learning, а уж потом doing. Как говаривал Ницше: "Лишь построив дом научаешься тому, что должен был знать с самого начала". Научится-то научился, но дом-то уже построен!

Не имея нормальной практики, по книжкам не выучишься. Это так же, как не выучиться летать на самолете по книжке.

А дом, что дом... Если крепкий получился - то пусть стоит, а если нет, то сам развалится. Зато будет опыт, "как строить нельзя" :)


Название: Re: передать форме данные при создании
Отправлено: Igors от Май 06, 2016, 17:43
Не имея нормальной практики, по книжкам не выучишься.
С этим никто не спорит, но где молодому человеку взять нормальную практику? Ведь чувствовать какая задача реальна а какая фантазия приходит после многих лет работы (и то не всегда).
Цитировать
Мудрость приходит со старостью, но старость чаще приходит одна
:)


Название: Re: передать форме данные при создании
Отправлено: Bepec от Май 06, 2016, 18:29
Как показывает практика, всё реально, вопрос лишь в количестве костылей :D


Название: Re: передать форме данные при создании
Отправлено: stetsenko от Май 10, 2016, 23:07
странно что с помощью конструктора не получается