Framework Qt 4.7 Проблемы отображения при переносе проекта с Windows на Mac OS

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

Имеется рабочий проект на Win7x64, полностью рабочий (во всех смыслах, и самое главное — относительно отображения графических объектов). Проект сделан без использования форм (все прописывалось ручками).

При переносе сего на ОС Mac OS X 10.6.8 ни с того ни с сего не отображаются ни кнопки, ни окна, ни text-edit'ы. Единственное, что отображается — это таблицы, которые, между прочим, «приложены» на те же слои, что и вышеупомянутые объекты.

Проект собирается без ошибок.

Ради интереса создал проект с использованием форм, так там все работает «на ура» (и кнопки, и text-edit'ы).

Подскажите, в чем проблема?
  • Вопрос задан
  • 2784 просмотра
Пригласить эксперта
Ответы на вопрос 6
@Zeldan
В первую очередь пройтись по этому списку, Qt for Mac OS X — Specific Issues

Цитата:
«Mac OS X handles most applications as „bundles“. A bundle is a directory structure that groups related files together (e.g., widgets.app/). GUI applications in particular must be run from a bundle or by using the open(1), because Mac OS X needs the bundle to dispatch events correctly, as well as for accessing the menu bar.»

Перевод:
«МacOs X обрабатывает приложения в виде „связки“. „Связка“ — это структура директорий, которая объединяет в себе файлы (виджеты и прочее). GUI приложения обычно должны быть запущены из связки или с использованием open(1), потому что MacOs X требует „связку“ для верной обработки событий, таких как доступ к панели меню»
и т.д

Если все особенности были учтены, тогда необходимы подробности, т.к возможно для вашей проблемы есть отдельные патчи.
Ответ написан
Paul
@Paul
Я правильно понял, что lTable это у вас Q3Table? Если это так, то дело может быть в неполноценной поддержке qt3support на маке, хотя не уверен.

Ещё не видно кода, где вы складываете lTable, iTalbe и lCode в lMainLayout.
Ответ написан
sig
@sig Автор вопроса
Сейчас попробовал создать проект с нуля. Все те же файлы, копировал содержимое. Результат тот же.
Потом решил, что проблема в неявном указании подключаемых библиотек — переписал в <QtGui/QPushButton> и т.д. 20 строчек. Результат тот же

Выхода нет, но либо придется переводить проект на ui-формы, либо ставить windows на vm virtualbox.

Ни то, ни другое не радует, учитывая потраченные 4 часа на переустановку Mac OS X с 10.5 до 10.6.8 по просьбе пакета Qt 4.7.
Ответ написан
Комментировать
petejones83
@petejones83
Как раз самое интересное пропустили — как вы формируете layout, очевидно, проблема в этом.
При добавлении на layout виджета, первый становится родителем второго. Поэтому если у вас в какой-то момент удаляется mainWindow, то удаляется и layout, который уже сносит все виджеты на нем. И черт его знает, что происходит с объектами lTable и подобными.
Ответ написан
Комментировать
sig
@sig Автор вопроса

// Слои главного окна
       // Тут 4 описания пропустил. Основной слой - ниже.
        QVBoxLayout *mainLayout = new QVBoxLayout;
        mainLayout->addLayout(topLayout);
        mainLayout->addLayout(afterTopLayout1);
        mainLayout->addWidget(&code);
        mainLayout->addLayout(buttomLayout);

// Слои окна лексического анализатора
        QHBoxLayout *lHeaderLayout = new QHBoxLayout;
        lHeaderLayout->addWidget(&lCode);
        lHeaderLayout->addWidget(&lTable);
        lHeaderLayout->addWidget(&iTable);

        QVBoxLayout *lMainLayout = new QVBoxLayout;
        lMainLayout->addWidget(lHeader);
        lMainLayout->addLayout(lHeaderLayout);

Затем уже идет добавление слоев на свои окна соответственно.
Ответ написан
petejones83
@petejones83
В принципе, можно посмотреть генерируемый ui_*.h файл и найти разницу :)
Там как раз все делается через new и указывается parent.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы