Re[12]: Библиотека для создания графических интерфейсов польз
От: c-smile Канада http://terrainformatica.com
Дата: 15.09.17 02:49
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, c-smile, Вы писали:


Pzz>>>Когда не надо каждую загогулинку описывать кучей слов, размазанной по куче файлов.


CS>>А когда нужно поменять скажем базовый шрифт для всего UI ты как это делаешь?

CS>>Я — меняю одну строку. А ты?

Pzz>Удобство одной, весьма редкой, операции не означает удобства в целом.


Ну хотя бы одну операцию привел.

Назови что-нибудь конкретное из "удобства в целом" — обсудим. Без этого — разговор с Привоза "сделай мине хорошо".
Re[11]: Библиотека для создания графических интерфейсов польз
От: MTD https://github.com/mtrempoltsev
Дата: 15.09.17 04:32
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>И как же у меня та самая аська до сих пор работает без этого номера? Уже лет 20, кстати. Правда, без хваленого новомодного клиента на Qt.


При чем тут Qt? За поддержку старых учеток отвечает сервер, то что тебя пока не вынудили апгрейднуть учетку, не значит что это не произойдет. Про 20 лет ты конечно не помнишь, за это время протоколы менялись несколько раз. Если твоя боль вызванная появлением непонятных для тебя слов (это же на слово Qt ты так возбудился, как и ряд забавных персонажей?) утихнет, можешь историю аськи прочитать, например, про AOL которая фактически убила аську и менявшая протоколы для борьбы с неофициальными клиентами.
Re[13]: Библиотека для создания графических интерфейсов польз
От: SaZ  
Дата: 15.09.17 08:32
Оценка: +2
Здравствуйте, c-smile, Вы писали:


CS>Там больше проблемы не циклическим dispatching по существу (который тоже есть как проблема), а с ownership ибо QObject это refcounted штука.

CS>Т.е. замкнутая цепочка slot subscribers может быть неудаляемой обычным способом.

CS>Но это собственно не Qt проблема, а общая для refcounted систем.


А подробнее можно? Что такое замкнутая цепочка подписчиков? Типа объект А подписан на Б, Б подписан на А? С удалением таких вещей в Qt проблем нет.
Re[9]: Библиотека для создания графических интерфейсов польз
От: SaZ  
Дата: 15.09.17 08:42
Оценка: 5 (1) +1
Здравствуйте, Marty, Вы писали:

M>Мне не до лампочки. Если каждая мелочь будет свой куте тянуть мои 3тб быстро закончаться


У меня на одном проекте с динамической линковкой (со статикой было бы куда меньше) Qt с GUI+QtWebKit занимала 9 мегабайт.
А когда вопрос размера дистрибутива стал всё чаще подыматься — им занялись. И как результат получилось вот это. А ещё можно покрыть каким-либо UPX-ом.
Re[4]: Библиотека для создания графических интерфейсов польз
От: Nikolaz Германия www.nikeware.com
Дата: 15.09.17 10:18
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Здравствуйте, rumit7, Вы писали:


R>>почти все топовые антивирусы (кроме касперыча) используют sciter!

S>Обчычно у антивирусов ужасный интерфейс, ИМХО.
А причём тут Sciter или Qt?
Re[5]: Библиотека для создания графических интерфейсов польз
От: Skorodum Россия  
Дата: 15.09.17 11:25
Оценка:
Здравствуйте, Nikolaz, Вы писали:

R>>>почти все топовые антивирусы (кроме касперыча) используют sciter!

S>>Обчычно у антивирусов ужасный интерфейс, ИМХО.
N>А причём тут Sciter или Qt?
При том, что использование Sciter антивирусами не самый лучший аргумент в споре о выборе библиотеки для написания хорошего кросс-плотформенного интерфейса.

Ну и вообще Sciter и Qt это несколько разные весовые категории. Qt это уже давно намного больше, чем просто библиотека для интерфейса и платформ она поддерживает куда больше. Пользователей у Qt на пару порядков больше.
Re[9]: Библиотека для создания графических интерфейсов польз
От: Skorodum Россия  
Дата: 15.09.17 11:59
Оценка: +1
Здравствуйте, c-smile, Вы писали:


CS>Мне как-то главный UX гай из софтверной конторы из топ 100 рассказывал что по их исследованиям пользователь принимает решение про использование продукта за первые 40 секунд начиная от click на download.

CS>И первый экран что появится — критически важен.
Сегодня все эту задачу решают по другому: сначала скачивается минимальный установщик, который уже докачивает все необходимое по ходу дела.
Re[13]: Библиотека для создания графических интерфейсов польз
От: Skorodum Россия  
Дата: 15.09.17 12:06
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Там больше проблемы не циклическим dispatching по существу (который тоже есть как проблема), а с ownership ибо QObject это refcounted штука. Т.е. замкнутая цепочка slot subscribers может быть неудаляемой обычным способом.

Можно в этом месте по подробнее, а то я за много лет использования Qt первый раз слышу о каких-то таких проблемах.
Re[14]: Библиотека для создания графических интерфейсов польз
От: MTD https://github.com/mtrempoltsev
Дата: 15.09.17 12:17
Оценка: +2
Здравствуйте, Skorodum, Вы писали:

S>Можно в этом месте по подробнее, а то я за много лет использования Qt первый раз слышу о каких-то таких проблемах.


Он Qt не знает, как и большинство отметившихся в теме, но мнение имеет. QObject не имеет счетчика ссылок.
Re[15]: Библиотека для создания графических интерфейсов польз
От: Skorodum Россия  
Дата: 15.09.17 12:34
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Он Qt не знает, как и большинство отметившихся в теме, но мнение имеет. QObject не имеет счетчика ссылок.

Ну я думал, может я что-то не понял... все таки авторитетный на кывт/сpp человек, а пишет что-то странное... а jazzer еще и плюсует...
Re[15]: Библиотека для создания графических интерфейсов польз
От: night beast СССР  
Дата: 15.09.17 12:38
Оценка:
Здравствуйте, MTD, Вы писали:

S>>Можно в этом месте по подробнее, а то я за много лет использования Qt первый раз слышу о каких-то таких проблемах.


MTD>Он Qt не знает, как и большинство отметившихся в теме, но мнение имеет. QObject не имеет счетчика ссылок.


шо, совсем-совсем не имеет?
а это что:

QAtomicPointer<QtSharedPointer::ExternalRefCountData> QObjectPrivate::sharedRefcount;

Re[16]: Библиотека для создания графических интерфейсов польз
От: MTD https://github.com/mtrempoltsev
Дата: 15.09.17 13:14
Оценка:
Здравствуйте, night beast, Вы писали:

NB>шо, совсем-совсем не имеет?

NB>а это что:
NB>

NB>QAtomicPointer<QtSharedPointer::ExternalRefCountData> QObjectPrivate::sharedRefcount;


Давай почитаем код?

Объявление:

    // these objects are all used to indicate that a QObject was deleted
    // plus QPointer, which keeps a separate list
    QAtomicPointer<QtSharedPointer::ExternalRefCountData> sharedRefcount;


Конструктор ExternalRefCountData:

        inline ExternalRefCountData(DestroyerFn d)
            : destroyer(d)
        {
            strongref.store(1);
            weakref.store(1);
        }


Используется только в деструкторе QObject:

    QtSharedPointer::ExternalRefCountData *sharedRefcount = d->sharedRefcount.load();
    if (sharedRefcount) {
        if (sharedRefcount->strongref.load() > 0) {
            qWarning("QObject: shared QObject was deleted directly. The program is malformed and may crash.");
            // but continue deleting, it's too late to stop anyway
        }

        // indicate to all QWeakPointers that this QObject has now been deleted
        sharedRefcount->strongref.store(0);
        if (!sharedRefcount->weakref.deref())
            delete sharedRefcount;
    }


Где здесь подсчет ссылок?
Re[17]: Библиотека для создания графических интерфейсов поль
От: night beast СССР  
Дата: 15.09.17 13:18
Оценка:
Здравствуйте, MTD, Вы писали:

NB>>шо, совсем-совсем не имеет?

NB>>а это что:
NB>>

NB>>QAtomicPointer<QtSharedPointer::ExternalRefCountData> QObjectPrivate::sharedRefcount;


MTD>Давай почитаем код?


MTD>Где здесь подсчет ссылок?


ну то есть объект нужен только для того чтобы проинициализировать в конструкторе, и удалить в деструкторе, и в промежутке между этим никак не используется и не изменяется?
Отредактировано 15.09.2017 13:19 night beast . Предыдущая версия .
Re[18]: Библиотека для создания графических интерфейсов поль
От: MTD https://github.com/mtrempoltsev
Дата: 15.09.17 13:49
Оценка: +1
Здравствуйте, night beast, Вы писали:

NB>ну то есть объект нужен только для того чтобы проинициализировать в конструкторе, и удалить в деструкторе, и в промежутке между этим никак не используется и не изменяется?


Код почитай перед тем как задавать вопросы. Qt не использует счетчики ссылок, они используют связь parent-children, когда удаляется родитель он отписывается от всех сигналов и удаляет по списку своих детей. Самому таким образом ничего удалять не надо, создавать надо в куче.
Re[19]: Библиотека для создания графических интерфейсов поль
От: night beast СССР  
Дата: 15.09.17 13:59
Оценка: +2 -1
Здравствуйте, MTD, Вы писали:

NB>>ну то есть объект нужен только для того чтобы проинициализировать в конструкторе, и удалить в деструкторе, и в промежутке между этим никак не используется и не изменяется?


MTD>Код почитай перед тем как задавать вопросы. Qt не использует счетчики ссылок, они используют связь parent-children, когда удаляется родитель он отписывается от всех сигналов и удаляет по списку своих детей. Самому таким образом ничего удалять не надо, создавать надо в куче.


и как использование связи parent-children отменяет использование счетчика ссылок?
насчет того что чего-то удалять не нужно попробуй создать на куче объект без парента и забудь удалить.
Re[2]: Библиотека для создания графических интерфейсов пользователя
От: Dym On Россия  
Дата: 15.09.17 14:03
Оценка: +1
XOO>есть еще Джус: https://www.juce.com
Джус заточен на музыкальную предметную область, отсюда и дизайн компонентов. Не для всех приложений это уместно.
Счастье — это Glück!
Re[20]: Библиотека для создания графических интерфейсов поль
От: MTD https://github.com/mtrempoltsev
Дата: 15.09.17 15:33
Оценка:
Здравствуйте, night beast, Вы писали:

NB>и как использование связи parent-children отменяет использование счетчика ссылок?


Ты знаешь такую структуру данных — дерево? Если нет, советую ознакомится — одна из базовых структур. Там каждый узел знает о дочерних узлах и при удалении может удалить свои дочерние узлы, а те в свою очередь рекурсивно свои. Счетчик ссылок там избыточен и бесполезен.

NB>насчет того что чего-то удалять не нужно попробуй создать на куче объект без парента и забудь удалить.


Очевидно будет утечка памяти, в документации про это написано. Но, кстати, утечка будет не всегда — многие классы устанавливают себя как парента, например лайоуты, при добавлении в них виджетов.
Re[21]: Библиотека для создания графических интерфейсов поль
От: night beast СССР  
Дата: 15.09.17 16:59
Оценка:
Здравствуйте, MTD, Вы писали:

NB>>и как использование связи parent-children отменяет использование счетчика ссылок?


MTD>Ты знаешь такую структуру данных — дерево? Если нет, советую ознакомится — одна из базовых структур. Там каждый узел знает о дочерних узлах и при удалении может удалить свои дочерние узлы, а те в свою очередь рекурсивно свои. Счетчик ссылок там избыточен и бесполезен.


если ты не удалишь парента, твое дерево тебе ничем не поможет.
а чтобы его удалить, тебе нужен SharedPointer, который, внезапно, использует счетчик ссылок (упомянутый ранее sharedRefcount)
про чудеса лейаутов можешь не рассказывать, славу богу с кутом больше 6 лет работаю.
Re[14]: Библиотека для создания графических интерфейсов польз
От: c-smile Канада http://terrainformatica.com
Дата: 15.09.17 17:47
Оценка: +1
Здравствуйте, SaZ, Вы писали:

SaZ>Здравствуйте, c-smile, Вы писали:



CS>>Там больше проблемы не циклическим dispatching по существу (который тоже есть как проблема), а с ownership ибо QObject это refcounted штука.

CS>>Т.е. замкнутая цепочка slot subscribers может быть неудаляемой обычным способом.

CS>>Но это собственно не Qt проблема, а общая для refcounted систем.


SaZ>А подробнее можно? Что такое замкнутая цепочка подписчиков? Типа объект А подписан на Б, Б подписан на А? С удалением таких вещей в Qt проблем нет.


Помнится на заре моего использования Qt этот самый QObject использовал обычный refcount.
Сейчас ситуация явно изменилась как я увидел из этой ветки, спасибо всем отписавшимся — узнал что-то новое — и это здорово.

На самом деле вся инфраструктура QObject как оказалось еще более навороченна (тяжела?) чем представлялось.

У каждого QObject есть еще QObjectData. Т.е. дополнительная косвенность обращений.
А каждый QPointer содержит в себе QWeakPointer который уже есть refcounter штука


В то же самое время HTML DOM это direct parent-child tree:

class node : refcounted_resource {
  element* parent;
  uint     index; // in parent children collection
}

class element: node {
  vector<handle<node>> children;
}


Т.е. построено на прямых pointers — более легковесное.
Re[22]: Библиотека для создания графических интерфейсов поль
От: MTD https://github.com/mtrempoltsev
Дата: 15.09.17 19:09
Оценка:
Здравствуйте, night beast, Вы писали:

NB>если ты не удалишь парента, твое дерево тебе ничем не поможет.


А ты возьми и удали.

NB>а чтобы его удалить, тебе нужен SharedPointer, который, внезапно, использует счетчик ссылок (упомянутый ранее sharedRefcount)


Зачем ты упорно выдумываешь то, чего нет? Нет там никакого подсчета ссылок, код я тебе уже показал. А этот код из деструктора QObject как уживается с выдуманным тобой шаред поинтером?

    for (int i = 0; i < children.count(); ++i) {
        currentChildBeingDeleted = children.at(i);
        children[i] = 0;
        delete currentChildBeingDeleted;
    }


NB>про чудеса лейаутов можешь не рассказывать,


Не понял, для тебя магия вызов чего-то вроде этого setParent(this)?

NB>славу богу с кутом больше 6 лет работаю.


Так значит работаешь
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.