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

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Использование приватных функций Qt  (Прочитано 8357 раз)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« : Декабрь 11, 2012, 16:39 »

Кто скажет как можно заюзать приватные функции Qt?

в частности интересует qt_mac_get_scalefactor()

она находится в файле qt_cocoa_helpers_mac_p.h, но внутри есть инклуды типа <private/blablabla> и при компиляции компилятор ругается на private.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Декабрь 11, 2012, 16:51 »

и при компиляции компилятор ругается на private.

Как именно? Неужели так сложно сразу запостить ошибку?
Записан
Bepec
Гость
« Ответ #2 : Декабрь 11, 2012, 16:53 »

Насколько я помню, у тебя это получится только с выдёргиванием всего включенного функционала.
И в ассистенте написано, что если функции объявлены приватными, они не рекомендуются для использования. Слишком масштабные бедствия можно вызвать Улыбающийся
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #3 : Декабрь 11, 2012, 16:58 »

и при компиляции компилятор ругается на private.

Как именно? Неужели так сложно сразу запостить ошибку?

моя вина, подумал что это очевидно, ругается так

Код:
error: private/qt_mac_p.h: No such file or directory
error: private/qeffects_p.h: No such file or directory
private/qwidget_p.h: No such file or directory

Насколько я помню, у тебя это получится только с выдёргиванием всего включенного функционала.
И в ассистенте написано, что если функции объявлены приватными, они не рекомендуются для использования. Слишком масштабные бедствия можно вызвать Улыбающийся

понимаю что это плохо, но мне либо тот же функционал переписать либо просто подключить готовый Улыбающийся тем более нужна одна ф-ция
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Декабрь 11, 2012, 17:03 »

Код:
error: private/qt_mac_p.h: No such file or directory
error: private/qeffects_p.h: No such file or directory
private/qwidget_p.h: No such file or directory

Скорее всего не прописаны пути для поиска инклудов. Покажи строку компиляции конкретного файла.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #5 : Декабрь 11, 2012, 17:16 »

Код:
g++-4.0 -c -pipe -O2 -arch i386 -Wall -W -isysroot /Developer/SDKs/MacOSX10.6.sdk -DQT_NO_DEBUG -DQT_DECLARATIVE_LIB -DQT_WEBKIT_LIB -DQT_SQL_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.8.4/mkspecs/macx-g++40 -I. -I/usr/local/Trolltech/Qt-4.8.4/lib/QtCore.framework/Headers -I/usr/local/Trolltech/Qt-4.8.4/include/QtCore -I/usr/local/Trolltech/Qt-4.8.4/lib/QtNetwork.framework/Headers -I/usr/local/Trolltech/Qt-4.8.4/include/QtNetwork -I/usr/local/Trolltech/Qt-4.8.4/lib/QtGui.framework/Headers -I/usr/local/Trolltech/Qt-4.8.4/include/QtGui -I/usr/local/Trolltech/Qt-4.8.4/lib/QtXml.framework/Headers -I/usr/local/Trolltech/Qt-4.8.4/include/QtXml -I/usr/local/Trolltech/Qt-4.8.4/lib/QtSql.framework/Headers -I/usr/local/Trolltech/Qt-4.8.4/include/QtSql -I/usr/local/Trolltech/Qt-4.8.4/lib/QtWebKit.framework/Headers -I/usr/local/Trolltech/Qt-4.8.4/include/QtWebKit -I/usr/local/Trolltech/Qt-4.8.4/lib/QtDeclarative.framework/Headers -I/usr/local/Trolltech/Qt-4.8.4/include/QtDeclarative -I/usr/local/Trolltech/Qt-4.8.4/include -I/usr/local/Trolltech/Qt-4.8.4//src/3rdparty/zlib -I/usr/local/Trolltech/Qt-4.8.4//src/gui/text -I/Users/macmini/Downloads/qt-everywhere-opensource-src-4.8.4/include/QtGui/private -I../../quazip-0.5/quazip -Itmp/moc_dir -Itmp/ui/include -F/usr/local/Trolltech/Qt-4.8.4//lib -o tmp/obj/surfacewindow.o src/surfacewindow.cpp
In file included from /Users/macmini/Downloads/qt-everywhere-opensource-src-4.8.4/include/QtGui/private/qt_cocoa_helpers_mac_p.h:1,
                 from src/surfacewindow.cpp:16:
/Users/macmini/Downloads/qt-everywhere-opensource-src-4.8.4/include/QtGui/private/../../../src/gui/kernel/qt_cocoa_helpers_mac_p.h:91:30: error: private/qt_mac_p.h: No such file or directory
/Users/macmini/Downloads/qt-everywhere-opensource-src-4.8.4/include/QtGui/private/../../../src/gui/kernel/qt_cocoa_helpers_mac_p.h:105:32: error: private/qeffects_p.h: No such file or directory
/Users/macmini/Downloads/qt-everywhere-opensource-src-4.8.4/include/QtGui/private/../../../src/gui/kernel/qt_cocoa_helpers_mac_p.h:106:31: error: private/qwidget_p.h: No such file or directory
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #6 : Декабрь 11, 2012, 17:48 »

можно закрывать тему Улыбающийся выдернул эту ф-цию целиком, а она всеравно не верно работает.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Декабрь 11, 2012, 18:18 »

функция состоит аж из одной строки Улыбающийся ты же под карбон собираешь? может дело в том, что она Deprecated в 10.7?

p.s. а нельзя её вызвать как-нибудь по-хитрому, аналогично функции установки меню для иконки приложения?
Код
C++ (Qt)
CGFloat qt_mac_get_scalefactor(); // объявили
CGFloat scaleFactor = qt_mac_get_scalefactor();
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
V1KT0P
Гость
« Ответ #8 : Декабрь 11, 2012, 21:34 »

моя вина, подумал что это очевидно, ругается так

Код:
error: private/qt_mac_p.h: No such file or directory
error: private/qeffects_p.h: No such file or directory
private/qwidget_p.h: No such file or directory
Дык все что оканчивается на "*_p" является приватным и поэтому не поставляются с бинарными сборками. Скачай полные исходники и они там будут.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #9 : Декабрь 12, 2012, 12:47 »

p.s. а нельзя её вызвать как-нибудь по-хитрому, аналогично функции установки меню для иконки приложения?

тоже пробовал так, но тогда не линкуется софт, просит описание ф-ции.

моя вина, подумал что это очевидно, ругается так

Код:
error: private/qt_mac_p.h: No such file or directory
error: private/qeffects_p.h: No such file or directory
private/qwidget_p.h: No such file or directory
Дык все что оканчивается на "*_p" является приватным и поэтому не поставляются с бинарными сборками. Скачай полные исходники и они там будут.

у меня полные исходники есть, но я думаю что проблема именно с private в начале пути, ибо я такого пути не нашел даже Улыбающийся


Так или иначе проблему решил. Функция которую использует Qt работает либо не корректно, либо я не совсем понимаю ее назначения, она всегда возвращает 1, даже на retina дисплеях. Собственно говоря, я просто впилил *.mm файл в проект и немного переписал ф-цию

Код:
CGFloat qt_mac_get_scalefactor()
{
    return [[NSScreen mainScreen] backingScaleFactor];
}

для обычных дисплеев я получаю 1 ,а для ретина 2. Может это комуто поможет Улыбающийся А и да, нужно добавить путь к OSX 10.7 SDK иначе не соберется проект.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #10 : Декабрь 12, 2012, 13:36 »

ты ведь таким образом отсекаешь всех «дольвиных» пользователей. может имеет смысл написать так?
Код
Objective-C
CGFloat qt_mac_get_scalefactor()
{
   NSScreen *screen = [NSScreen mainScreen];
   return [screen respondsToSelector:@selector(backingScaleFactor)] ? [screen backingScaleFactor] : [screen userSpaceScaleFactor];
}
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #11 : Декабрь 12, 2012, 13:40 »

хм, спасибо за совет, в мак апи еще совсем не силен Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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