Russian Qt Forum
Сентябрь 28, 2024, 16:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 54 55 [56] 57 58
826  Qt / Model-View (MV) / Re: SqlTableModel + SortFilterProxyModel : Февраль 15, 2013, 11:47
возможно неправ с этими переводами, но на английском оставить, не так меня поймут), так вроде отображает как надо, на фильтрацию это врядли влияет, а так спасибо за замечание, как говорится на ошибках учатся, к сожалению в основном приходится учится исключительно на своих... Грустный
С переводом лучше пораньше разобраться, тем более, что там все довольно просто. А так, чем дальше - тем больше потом переделывать придется Улыбающийся.
827  Qt / Model-View (MV) / Re: SqlTableModel + SortFilterProxyModel : Февраль 14, 2013, 17:20
Может сначала надо model->select() вызвать, а потом model->setHeaderData? Так и в справке написано.

Код
C++ (Qt)
model->select();
model->setHeaderData(fio, Qt::Horizontal, tr("Ф.И.О."));
model->setHeaderData(otdel, Qt::Horizontal, tr("Отдел"));
model->setHeaderData(tel, Qt::Horizontal, tr("Телефон"));

И строки надо всегда писать латинскими буквами. Не надо туда пихать русские, тем более не в кодировке UTF-8. tr("......") предназначено для перевода с английского на другие языки, а не наоборот.
828  Программирование / С/C++ / Re: Изменить ссылку (?) : Февраль 10, 2013, 13:08
При конструировании передавать "фуфло", а дальше править.
Предвосхищая вопрос: "А где этот фуфло брать? Его же тоже еще нет. Если все фуфлы создавать заранее, то вдруг они не понадобятся, и будут только место занимать.", предлагаю добавить фабрику фуфла: FufloFactory.
829  Программирование / С/C++ / Re: Изменить ссылку (?) : Февраль 09, 2013, 16:06
Не "покажет", а скажет - смотрите в "ННН" и делайте сами Веселый
"ННН"... зачем Вы так буст зашифровали? Улыбающийся
830  Программирование / С/C++ / Re: Изменить ссылку (?) : Февраль 09, 2013, 15:35
И вообще, мне тут думается, что igors просто сидит и глумится сейчас над нами) Эта тема, как некое ответвление темы про сериализацию..
Готов поспорить, что в конце мы услышим от автора: Да это же была намеренная провокация, так изящно развёрнутая мной)
И в конце обязательно покажет правильный способ сериализации всея объектов во всея форматы Улыбающийся.
831  Программирование / С/C++ / Re: Изменить ссылку (?) : Февраль 09, 2013, 14:39
надеюсь когда-нибудь получу от Igor Шнобелевскую премию по программированию Строит глазки
Обязательно получите! Улыбающийся
Шаблоны есть? Есть. Ссылки вместо указателей? А как иначе! Даже shared_ptr есть в комплекте с reference_wrapper. И самое главное: ни фига не понятно! Как с этим жить и как поддерживать. За что отдельный бонус от Igors Улыбающийся.
832  Программирование / С/C++ / Re: Изменить ссылку (?) : Февраль 09, 2013, 13:54
Код:
	explicit ReadOnlySegmentTreeModel(const Segment& rootSegment, QObject* parent = 0);

Так а что передавать конструктору в качестве rootSegment (которого пока нет, он еще не загружен)? "Какое-то фуфло"? Улыбающийся
833  Программирование / С/C++ / Re: Сериализация (как сделать поудобнее) : Февраль 08, 2013, 21:50
При сохранении, вместо указателя сохранять его идентификатор, а при чтении получать по идентификатору указатель на объект.
А насколько плохо в качестве такого идентификатора использовать текущий адрес объекта в памяти? (Допустим, что памяти хватает и все нужные объекты там уже находятся).
834  Программирование / С/C++ / Re: Сериализация (как сделать поудобнее) : Февраль 08, 2013, 18:38
Какой "каждой структуре" Непонимающий Речь шла о полиморфных классах уже имеющих общую базу.
А я вот и жду, узнаем мы наконец-то, что конкретно Вы собираетесь сериализовать и куда. Началось со структур по сети, потом "vectot<int>, vectot<float>", теперь и до полиморфных классов добрались. Или Вы хотите универсальный метод для всего сразу изобрести? Улыбающийся
835  Программирование / С/C++ / Re: Сериализация (как сделать поудобнее) : Февраль 08, 2013, 14:52
Во как! "продемонстрировать направление", не просто так "дерем из дуста". Впрочем я не удивлен, темплейтщик любит все раздувать  Улыбающийся
Шаблоны как раз исходный текст программы и сдувают Улыбающийся. И направление в дусте весьма дельное. Жаль, что его разжевывать приходится.

Теперь при сохранении указателя на полиморфный тип вызываем a->ReadWrite(), (вместо оператора &), что конечно несколько неоднообразно. Критикуем, показываем как лучше
Отличный способ, реализуйте Улыбающийся. И как в дусте до такого не догадались... Наверное побоялись прилепить к каждой структуре базовый класс, да еще с виртуальным методом. И, чтобы отвести глаза, наваяли кучу шаблонов с макросами Улыбающийся.
836  Программирование / С/C++ / Re: Сериализация (как сделать поудобнее) : Февраль 08, 2013, 13:54
Почему не шаблон, по-моему здесь есть все основания
"Вы не понимаете!" (c)

Вполне нормальный пример. Для начала более чем достаточно, чтобы продемонстрировать направление. И копируйте код корректно, QDataStream совсем не iarchive находится.
837  Программирование / С/C++ / Re: Сериализация (как сделать поудобнее) : Февраль 07, 2013, 18:26
Негусто. Или я что-то упустил?

Есть одно маленькое упущение: чтобы получить конструктивное решение, надо описать конструктивное задание Улыбающийся. Потому как нет одного универсального метода, который ко всем случаям оптимально подойдет.

Поэтому повторюсь:
Цитировать
838  Программирование / С/C++ / Re: Сериализация (как сделать поудобнее) : Февраль 07, 2013, 16:31
Плюс Тролли хотели полной автономности и лишние зависимости были просто не нужны.
У меня примерно такие же аргументы были. И плюс, например, по контейнерам надо было выбирать. Все-таки чем-то одним надо пользоваться.

И да, если когда нибудь, не дай Бог конечно, вам придется писать софт без Qt обратите внимание на буст. Он многое предоставляет.
Смотрел туда одно время... На довольно низком уровне, для кроссплатформенности, похоже лучше и не найдешь библиотеки. Но хотелось уровень повыше и удобства, поэтому победил Qt Веселый. И буст таскать с собой не захотелось.
839  Программирование / С/C++ / Re: Сериализация (как сделать поудобнее) : Февраль 07, 2013, 16:09
Так почему бы не сказать проще "используй сериализацию буста, там давно за тебя все сделали". Однако не все спешат это делать - хотя сериализация есть у каждого. Был слушок что там проблемы с версиями - правда никаких подробностей не знаю. Да и просто перелопатить с Archive множество живых классов как-то не тянет. Да, в Qt кое-чего нет, так что, сразу привлекать др либу? Может и свои решения будут неплохи (или такая мысль не допускается?  Улыбающийся)
Выше уже сказали, что никто не заставляет использовать, а посмотреть на реализацию вполне стоит Улыбающийся.

Если бы буст был так хорош, и его бы использовали в Qt, я бы тоже им пользовался безоговорочно. Но разработчики Qt не используют его, более того, изобретают свои велосипеды, взять хоты бы их контейнеры QVector, QList и т.п. Хотя, казалось бы, бери хоть из std, хоть из буста. Велосипеды Qt мне нравятся намного больше, чем другие. Поэтому я пользуюсь Qt и добавляю туда свои запчасти, и не использую буст. Но это не значит, что нельзя в бусте подглядывать интересные и полезные моменты Улыбающийся.
840  Программирование / С/C++ / Re: Сериализация (как сделать поудобнее) : Февраль 07, 2013, 15:58
Все структуры взаимосвязаны.
Фактически они являются нодами огромнейшей системы. Каждая нода может ссылаться на данные, на другую ноду, быть объединённой с другой нодой. Имеются ноды различных типов, начиная от физ устройства, заканчивая виртуальными узлами. Собственно получается этакий чоООООрный круг. Что на самом деле не круг, а граф связей между ними Веселый

Да, ссылок может быть несколько Веселый

Если коротко, то способ с переопределением операторов для QDataStream не будет работать для полиморфных классов. Например:
Код
C++ (Qt)
class A {};
class B : public A {};
 
QDataStream & operator<< (QDataStream& stream, const A& a);
QDataStream & operator>> (QDataStream& stream, A& a);
 
QDataStream & operator<< (QDataStream& stream, const B& b);
QDataStream & operator>> (QDataStream& stream, B& b);
 
main
{
 A* b = new B();
 
QDataStream out(&file);
out << *b; // Call QDataStream & operator<< (QDataStream& stream, A& a);
}
будет записана только часть класса А, поля В сохранены не будут. Потому что используемый шаблон выбирается в compile-time, и компилятор не знает, какой фактически объект будет в run-time. Если у вас есть дочерние ноды, они создаются динамически и в compile-time их конкретный тип не известен, то Вас ожидают такие вот грабли Улыбающийся. И есть еще много других Веселый.

В способе буста тоже не все так безоблачно, стоить посмотреть Pointers to Objects of Derived Classes. Я о таком подозревал, и когда увидел это, стало еще тоскливее...
Страниц: 1 ... 54 55 [56] 57 58

Страница сгенерирована за 0.093 секунд. Запросов: 23.