Как полностью перенести библиотеку qt3 на qt4? - PullRequest
3 голосов
/ 12 октября 2010

Я наткнулся на несколько разных шагов, чтобы сделать это.Я запустил qt3to4.exe для файлов с ошибками компиляции и получил много шагов преобразования, однако теперь я получаю эту ошибку: 1>c:\qt\4.7.0\src\qt3support\widgets\q3toolbar.h(64) : error C2039: 'ToolBarDock' : is not a member of 'Qt' и 55 других подобных ошибок.Это смущает меня, так как он находится в собственной библиотеке q3support.Я также увидел на странице справки QT (http://doc.trolltech.com/4.2/qt-qt3.html)), что ToolBarDock устарел и вместо него следует использовать Qt :: Dock. Я не нашел большой помощи по этому вопросу. Я использую библиотеку в Visual Studio 2008. ЛюбойСпециалисты по QT / visual studio?

Если это поможет, вот код, в котором происходит сбой в q3toolbar.h:

Q3ToolBar(const QString &label,
          Q3MainWindow *, Qt::ToolBarDock = Qt::DockTop,
          bool newLine = false, const char* name=0);

Ответы [ 3 ]

2 голосов
/ 24 октября 2010

На самом деле qt34qt4 не делает все правильно. Есть много методов, перечислений и т. Д., Которые не конвертируются. Это более или менее простой инструмент поиска-замены, который заменяет следующие инструкции из qt \ tools \ porting \ q3porting.xml Во многих случаях есть определение замены для класса, но не для метода этого класса. В некоторых случаях qt3to4 заменяет перечисления и методы в коде, который вообще не принадлежит классам Qt. Так что будь осторожен. В любом случае, я бы предложил получить список всех классов Qt в вашем коде, внимательно прочитайте портирование заметок (http://doc.qt.nokia.com/4.5/porting4.html) для каждого класса, который вы используете. Другой проблемой являются типы возвращаемых данных, qt3to4 не проверяет, как используется возвращаемое значение. Fortunate qt3to4 отлично справляется со своей задачей, поэтому исправление остальных часто является тривиальной, повторяющейся задачей.

Если вам нужно портировать пользовательский интерфейс, взгляните на недокументированный аргумент -wrap of uic3.

PS: Некоторые цифры для вашей оценки усилий могут оказаться полезными: я портировал (получил компилирование) один раз 600TLOCs + 150 пользовательских интерфейсов за 2,5 месяца, в настоящее время я портирую около 150 проектов TLOC и получил довольно далеко за 2 недели ,

2 голосов
/ 20 августа 2011

У меня были и эти ошибки после импорта проекта в VC ++.Добавление QT3_SUPPORT к определениям препроцессора исправило его.

1 голос
/ 14 октября 2010

Я решил пойти другим путем по этой проблеме. Я нашел нужные мне реализации из "библиотеки qt3" где-то еще. Незадолго до того, как я узнал об этом, я получил несколько советов от некоторых коллег здесь. Консенсус заключался в том, что мне нужно пересобрать Qt, указав поддержку qt3. Хотя я этого не делал, вот несколько полезных ссылок.

http://www.qtcentre.org/wiki/index.php?title=Qt4_with_Visual_Studio

http://lists.trolltech.com/qt-interest/2006-11/thread00177-0.html

Если кто-то сталкивался с этим и справился с этой проблемой, пожалуйста, опубликуйте свое решение! Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...