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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Применение Qt::HANDLE  (Прочитано 7120 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« : Июль 13, 2010, 08:17 »

Доброго времени.

Нужно объединить в одном классе дескрипторы устройства так, чтобы они "нормально" работали в разных ОС.

Например для Windows типом дескриптора является тип HANDLE, в Linux тип int.
Я нашел в Qt описание типа Qt::HANDLE
Цитировать
typedef Qt::HANDLE

Platform-specific handle type for system objects. This is equivalent to void * on Windows and Mac OS X, and embedded Linux, and to unsigned long on X11.

вроде все-бы ничего, но смущает это:
Цитировать
and to unsigned long on X11
т.е. как я понял типом данных в Linux в этом случае будет unsigned long, а мне нужен int !

Боюсь, как бы не случилось "страшное" ! Улыбающийся

Т.е. класс должен выглядеть как-то так:
Код:
class MyClass : public QObject
{
    O_OBJECT

public:
    MyClass(Qt::HANDLE descriptor, QObject *parent = 0);
    ...
}

т.е. нужно чтобы переменная descriptor "правильно" скармливалась в разных осях. Это возможно?
Записан

ArchLinux x86_64 / Win10 64 bit
BRE
Гость
« Ответ #1 : Июль 13, 2010, 08:47 »

Определи сам:
Код
C++ (Qt)
#if defined( Q_OS_WIN32 )
typedef HANDLE DEV_HANDLE;
#elif defined( Q_OS_LINUX )
typedef int DEV_HANDLE;
#elif ...
 
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #2 : Июль 13, 2010, 09:38 »

Да, конечно, это так, но для этого придется подключать к примеру <qt_windows.h> . Но ты (или не ты) в других ранних топиках говорил что это не ТРУ т.к. открываются тогда стопицот тыщ дефайнов Win32API. Т.к. в идеале при программировании с использованием Qt всё это должно быть скрыто. Улыбающийся
« Последнее редактирование: Июль 13, 2010, 09:40 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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