LINUX.ORG.RU

История изменений

Исправление hobbit, (текущая версия) :

По поводу перехода Qt 4 => Qt 5 - оно в большинстве случаев несложное. Более того, если в программе не использовался QtWebkit (у меня не использовался, к счастью) и возможно, ещё что-то очень специфичное - можно вообще при минимальных усилиях не «переходить», а получить код, собирающийся и в Qt4, и в Qt5.

Собственно, у меня в DoubleContact так и сделано: вся цена совместимости - это условное включение QtWidgets в файле проекта и ещё парочка условных компиляций, связанная с тем, что часть методов теперь перетащили из QDesktopServices в QStandardPaths.

Что же касается Qt 3 => Qt 4 - да, там достаточно печально. Сам по себе qt3to4 работает неплохо. Но мне в своё время пришлось ещё насобирать граблей, связанных с использованием трюков типа ui.h (кто сталкивался, тот поймёт), которые с безболезненным переходом на Qt4 уже не очень совместимы.

Что же касается Qt3Support - некоторые из его классов переделываются простым переименованием классов и методов. С другими хуже. Сложнее всего, на мой взгляд, получилось с бывшим QTable, вместо которого теперь QTableWidget: если в ячейки QTable можно было напрямую писать текст, то теперь надо обязательно создавать либо QTableWidgetItem, либо ещё какой другой виджет. Невнимательность при портировании может запросто породить сегфолты вроде бы на пустом месте. Понятно, что повышенная сложность QTableWidget связана с его большими возможностями, но я не понимаю, почему нельзя было для простейших случаев оставить какой-нибудь упрощённый режим: таблицы, в которых нет ничего, кроме вывода текста, встречаются довольно часто. Правда, есть у меня подозрение, что тролли сделали так специально, чтобы поставить программистов перед дилеммой: вычищать авгиевы конюшни в QTableWidget или переходить на модели и QTableView, которые для больших и сложных таблиц действительно предпочтительнее. Но боюсь, что большинство программистов всё равно пошли (по крайней мере, поначалу) по первому пути, поскольку одновременно менять версию Qt и перетряхивать архитектуру проекта - не очень удачная идея.

многие разработчики, получив «таблетку от всех болезней», решили её заюзать, а другие — нет.

Без таблетки всё-таки было бы намного хуже. Одно дело - получить рабочий прототип и потихоньку избавляться от старого наследия (классы из Qt3Support можно выбрасывать постепенно), и совсем другое - когда надо сразу переписать кучу кода, и пока не перепишешь всё - программа не заработает, а ты даже не понимаешь, в правильном ли направлении идёшь. Я думаю, что это всё-таки была совершенно необходимая компенсация за доставленные неудобства.

В пользу сложности портирования Qt 3 => Qt 4 отзывались ещё разработчики TDE. Они хотели портировать KDE 3.5 на Qt 4, но их энтузиазм быстро куда-то испарился.

Эксперимент был бы интересный, да. Но возможно, проще было бы, наоборот, попробовать взять за основу KDE4 и вырезать из него плазму и прочие громоздкие компоненты. На ЛОРе так, кажется, даже кто-то делал.

Исправление hobbit, :

По поводу перехода Qt 4 => Qt 5 - оно в большинстве случаев несложное. Более того, если в программе не использовался QtWebkit (у меня не использовался, к счастью) и возможно, ещё что-то очень специфичное - можно вообще при минимальных усилиях не «переходить», а получить код, собирающийся и в Qt4, и в Qt5.

Собственно, у меня в DoubleContact так и сделано: вся цена совместимости - это условное включение QtWidgets в файле проекта и ещё парочка условных компиляций, связанная с тем, что часть методов теперь перетащили из QDesktopServices в QStandardPaths.

Что же касается Qt 3 => Qt 4 - да, там достаточно печально. Сам по себе qt3to4 работает неплохо. Но мне в своё время пришлось ещё насобирать граблей, связанных с использованием трюков типа ui.h (кто сталкивался, тот поймёт), которые с безболезненным переходом на Qt4 уже не очень совместимы.

Что же касается Qt3Support - некоторые из его классов переделываются простым переименованием классов и методов. С другими хуже. Сложнее всего, на мой взгляд, получилось с бывшим QTable, вместо которого теперь QTableWidget: если в ячейки QTable можно было напрямую писать текст, то теперь надо обязательно создавать либо QTableWidgetItem, либо ещё какой другой виджет. Невнимательность при портировании может запросто породить сегфолты вроде бы на пустом месте. Понятно, что повышенная сложность QTableWidget связана с его большими возможностями, но я не понимаю, почему нельзя было для простейших случаев оставить какой-нибудь упрощённый режим: таблицы, в которых нет ничего, кроме вывода текста, встречаются довольно часто. Правда, есть у меня подозрение, что тролли сделали так специально, чтобы поставить программистов перед дилеммой: вычищать авгиевы конюшни в QTableWidget или переходить на модели и QTableView, которые для больших и сложных таблиц действительно предпочтительнее. Но боюсь, что большинство программистов всё равно пошли (по крайней мере, поначалу) по первому пути, поскольку одновременно менять версию Qt и перетряхивать архитектуру проекта - не очень удачная идея.

В пользу сложности портирования Qt 3 => Qt 4 отзывались ещё разработчики TDE. Они хотели портировать KDE 3.5 на Qt 4, но их энтузиазм быстро куда-то испарился.

Эксперимент был бы интересный, да. Но возможно, проще было бы, наоборот, попробовать взять за основу KDE4 и вырезать из него плазму и прочие громоздкие компоненты. На ЛОРе так, кажется, даже кто-то делал.

Исправление hobbit, :

По поводу перехода Qt 4 => Qt 5 - оно в большинстве случаев несложное. Более того, если в программе не использовался QtWebkit (у меня не использовался, к счастью) и возможно, ещё что-то очень специфичное - можно вообще при минимальных усилиях не «переходить», а получить код, собирающийся и в Qt4, и в Qt5.

Собственно, у меня в DoubleContact так и сделано: вся цена совместимости - это условное включение QtWidgets в файле проекта и ещё парочка условных компиляций[/urд], связанная с тем, что часть методов теперь перетащили из QDesktopServices в QStandardPaths.

Что же касается Qt 3 => Qt 4 - да, там достаточно печально. Сам по себе qt3to4 работает неплохо. Но мне в своё время пришлось ещё насобирать граблей, связанных с использованием трюков типа ui.h (кто сталкивался, тот поймёт), которые с безболезненным переходом на Qt4 уже не очень совместимы.

Что же касается Qt3Support - некоторые из его классов переделываются простым переименованием классов и методов. С другими хуже. Сложнее всего, на мой взгляд, получилось с бывшим QTable, вместо которого теперь QTableWidget: если в ячейки QTable можно было напрямую писать текст, то теперь надо обязательно создавать либо QTableWidgetItem, либо ещё какой другой виджет. Невнимательность при портировании может запросто породить сегфолты вроде бы на пустом месте. Понятно, что повышенная сложность QTableWidget связана с его большими возможностями, но я не понимаю, почему нельзя было для простейших случаев оставить какой-нибудь упрощённый режим: таблицы, в которых нет ничего, кроме вывода текста, встречаются довольно часто. Правда, есть у меня подозрение, что тролли сделали так специально, чтобы поставить программистов перед дилеммой: вычищать авгиевы конюшни в QTableWidget или переходить на модели и QTableView, которые для больших и сложных таблиц действительно предпочтительнее. Но боюсь, что большинство программистов всё равно пошли (по крайней мере, поначалу) по первому пути, поскольку одновременно менять версию Qt и перетряхивать архитектуру проекта - не очень удачная идея.

В пользу сложности портирования Qt 3 => Qt 4 отзывались ещё разработчики TDE. Они хотели портировать KDE 3.5 на Qt 4, но их энтузиазм быстро куда-то испарился.

Эксперимент был бы интересный, да. Но возможно, проще было бы, наоборот, попробовать взять за основу KDE4 и вырезать из него плазму и прочие громоздкие компоненты. На ЛОРе так, кажется, даже кто-то делал.

Исходная версия hobbit, :

По поводу перехода Qt 4 => Qt 5 - оно в большинстве случаев несложное. Более того, если в программе не использовался QtWebkit (у меня не использовался, к счастью) и возможно, ещё что-то очень специфичное - можно вообще при минимальных усилиях не «переходить», а получить код, собирающийся и в Qt4, и в Qt5.

Собственно, у меня в DoubleContact так и сделано: вся цена совместимости - это условное включение QtWidgets в файле проекта и ещё парочка условных компиляций[/ur], связанная с тем, что часть методов теперь перетащили из QDesktopServices в QStandardPaths.

Что же касается Qt 3 => Qt 4 - да, там достаточно печально. Сам по себе qt3to4 работает неплохо. Но мне в своё время пришлось ещё насобирать граблей, связанных с использованием трюков типа ui.h (кто сталкивался, тот поймёт), которые с безболезненным переходом на Qt4 уже не очень совместимы.

Что же касается Qt3Support - некоторые из его классов переделываются простым переименованием классов и методов. С другими хуже. Сложнее всего, на мой взгляд, получилось с бывшим QTable, вместо которого теперь QTableWidget: если в ячейки QTable можно было напрямую писать текст, то теперь надо обязательно создавать либо QTableWidgetItem, либо ещё какой другой виджет. Невнимательность при портировании может запросто породить сегфолты вроде бы на пустом месте. Понятно, что повышенная сложность QTableWidget связана с его большими возможностями, но я не понимаю, почему нельзя было для простейших случаев оставить какой-нибудь упрощённый режим: таблицы, в которых нет ничего, кроме вывода текста, встречаются довольно часто. Правда, есть у меня подозрение, что тролли сделали так специально, чтобы поставить программистов перед дилеммой: вычищать авгиевы конюшни в QTableWidget или переходить на модели и QTableView, которые для больших и сложных таблиц действительно предпочтительнее. Но боюсь, что большинство программистов всё равно пошли (по крайней мере, поначалу) по первому пути, поскольку одновременно менять версию Qt и перетряхивать архитектуру проекта - не очень удачная идея.

В пользу сложности портирования Qt 3 => Qt 4 отзывались ещё разработчики TDE. Они хотели портировать KDE 3.5 на Qt 4, но их энтузиазм быстро куда-то испарился.

Эксперимент был бы интересный, да. Но возможно, проще было бы, наоборот, попробовать взять за основу KDE4 и вырезать из него плазму и прочие громоздкие компоненты. На ЛОРе так, кажется, даже кто-то делал.