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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 3 4 [5] 6 7 ... 180
61  Разное / Говорилка / Re: ты против Вы на форуме. : Декабрь 08, 2011, 22:18
А вобще мне кажется мы обсуждаем прям какой-то комплекс человека если к нему обратились не так как ОН хотел (ты вместо вы). Других объяснений у меня нет.
62  Разное / Говорилка / Re: ты против Вы на форуме. : Декабрь 08, 2011, 22:14
Надеюсь, ты осознаешь, что если тебе на форуме начнут Выкать, это будет стёб над тобой?

+100

Важнее как будет сказана та или иная фраза, нежели употребил ли ты "ВЫ" или "ТЫ". Мой выбор это употребление "ТЫ". Чем мне и нравится английский язык )))
63  Программирование / Общий / Re: Администрации сайта : Декабрь 01, 2011, 16:41
да, ее нужно снести поскорее
64  Qt / Пользовательский интерфейс (GUI) / Re: как вызывать метод через определённый интервал времени? : Декабрь 01, 2011, 02:10
Код
C++ (Qt)
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(sendMessage()));
timer->setInterval(40);
 
QPushButton *btn = new QPushButton(tr("Send"), this);
connect(btn , SIGNAL(clicked()), timer, SLOT(start()));
65  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Ноябрь 28, 2011, 14:52
Я за QDoc
66  Qt / Вопросы новичков / Re: QList<T> и освобождение памяти при удалении элементов : Октябрь 20, 2011, 17:15
Да, нужно
67  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Октябрь 08, 2011, 13:44
Можно как-то так
68  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Октябрь 08, 2011, 12:36
Кинь, если не затруднит, твой примерчик с приватными данными, применительно к реальной реализации.,
т.е. с набором тех методов и членов, которые ты бы сунул в эти приватные данные.

Ок
69  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Октябрь 07, 2011, 23:06
Ну я бы неназвал это engine. Скорее это приватные данные приватного класса ))
70  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Октябрь 07, 2011, 22:10
Но, увы, там будут не только платформоспецифичные методы, но и переменные.
Поэтому всё усложнится и загромоздится, если все сваливать в один заголовочный файл.

Можно сделать в этом случае вот как:

Код
C++ (Qt)
class SerialPortPrivateData;
 
class SerialPortPrivate
{
public:
   // some common methods
...
private:
   // some common data
   SerialPortPrivateData *m_data;
};

В SerialPortPrivateData будут "сложены" все переменные класа и методы каждой платформы в отдельности.

И каждый платформенный cpp будет иметь свое объявление и реализацию SerialPortPrivateData.

В таком случае иы измежим нагромождение дефайнов с хэдере.
71  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Октябрь 07, 2011, 00:42
pastor, имена разные для того, чтобы путаницы при отладке не было. Да и чтобы парсеры IDE сильно не насиловать.

Путаницы и сложности отладки я ненаблюдал, но снова таки дело вкуса.
72  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Октябрь 07, 2011, 00:27
ЗЫ: и парни, разберитесь досконально в исходниках, перед тем как что-то советовать (это камень к пастору) Улыбающийся.

Совершенно необоснованный ничем камень в мою сторону. Я так понимаю b-s-a понял очем речь. При одинаковых именах отпадает надобность в методе create() и впринципе в наследовани. Но это всего другой подход к решению одной и тойже задачи.

ЗЫ: А исходники я конечно смотрел.

Вот короткая иллюстрация:

serialport_p.h

Код
C++ (Qt)
class SerialPortPrivate
{
public:
   // some common methods
...
#ifdef Q_WS_WIN
  //some windows specified methods
#endif
#ifdef Q_WS_MAC
  //some mac specified methods
#endif
#ifdef Q_WS_X11
 //some unix specified methods
#endif
....
private:
   // some common data
};

В  файле serialport.cpp будет находится общая для всех платформ реализация методов.
В фалах serialport_win.cpp, serialport_mac.cpp, serialport_unix.cpp будет находиться реализация этих методов для каждой платформы

Ну и наконец

Код
C++ (Qt)
SerialPort::SerialPort(QObject *parent)
   : QIODevice(parent)
   , d_ptr(new SerialPortPrivate(this))
{}

создавал бы все что нужно вне зависимости от платформы.

В качестве примера можно рассмотреть qthread класс.

ЗЫЫ: Чтобы не перегружать serialport_p.h специфическими для платформы вспомогательными методами, их можно вынести в соотвествующее cpp файлы и оформить как статические функции.
73  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Октябрь 06, 2011, 15:38
Цитата: pastor
API данных класов я так понимаю одинаковое. Разместить объявление в одном общем *.h и разнести определение по *.cpp для каждой платформы: *_win.cpp, *_unix.cpp, *_mac.cpp, etc.
так оно и было (есть)

так зачем наследование и метод create()?


upd: Заглянул в исходники. Несовсем так. Имена классов для различных платформ не одинаковое.
74  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Октябрь 06, 2011, 11:37
Цитировать
У всех приватных классов есть общие данные. Логично их вынести в общий предок, чтобы не дублировать код.

Да, с этим согласен. Общие данные нужно вынести конечно

2 b-s-a: А эти данные общие для SerialPortPrivate и SerialPortNotifier или у этих классов свои данные?
75  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Октябрь 05, 2011, 23:38
Цитировать
Там изменения коснулись только приватных классов SerialPortPrivate и SerialPortNotifier.
Теперь классы SerialPortPrivate и  SerialPortNotifier являются абстрактными, и имеют статический метод create(),
который создает наследников SerialPortPrivate и SerialPortNotifier в зависимости от платформы.

.е. наследниками являются WinSerialPortPrivate, UnixSerialPortPrivate  и т.п., WinSerialPortNotifier , UnixSerialPortNotifier и т.п.


А почему не выбрали для всех архитектур одно имя? Зачем так сложно: абстрактный класс, наследование, статический метод? API данных класов я так понимаю одинаковое. Разместить объявление в одном общем *.h и разнести определение по *.cpp для каждой платформы: *_win.cpp, *_unix.cpp, *_mac.cpp, etc.
Страниц: 1 ... 3 4 [5] 6 7 ... 180

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