Qt и функции с переменным числом аргументов

Хорошо, прежде чем читать мне лекцию об использовании вариативных функций в стиле C в C ++ ... все остальное, как оказалось, не требует ничего, кроме переписывания Qt MOC.

Я хотел бы знать, можете ли вы иметь «слот» в объекте Qt, который принимает произвольное количество / тип аргументов. Дело в том, что я действительно хочу иметь возможность генерировать объекты Qt, которые имеют слоты произвольной подписи. Поскольку MOC несовместим со стандартной предварительной обработкой и с шаблонами, это невозможно сделать с помощью любого прямого подхода. Мне только что пришла в голову другая идея:

struct funky_base : QObject
{
  Q_OBJECT
  funky_base(QObject * o = 0);

public slots:
  virtual void the_slot(...) = 0;
};

Если это возможно, то поскольку вы можете создать шаблон, который является подклассом производного объекта QObject, пока вы не объявляете в нем новый материал Qt, я должен иметь возможность реализовать производный шаблонный тип, который принимает ... вещи и превращает их в соответствующие ожидаемые типы.

Если да, как мне к нему подключиться? Сработает ли это?

connect(x, SIGNAL(someSignal(int)), y, SLOT(the_slot(...)));

Если никто не пробовал делать что-то настолько безумное и ничего не знает, да, в конце концов, я попробую сам ... но я надеюсь, что у кого-то уже есть знания, которые я могу использовать, прежде чем тратить свое время на it.


Этот вопрос был попыткой найти способ разработать универсальный базовый класс для шаблонного объекта, который мог бы переводить сигналы Qt в статические сигналы, такие как boost :: signal2 или просто базовые функции. Я подумал, что если бы я мог построить слот, который принимал вариативные шаблоны, я мог бы использовать TMP для восстановления параметров из va_args. Ответ на проблему был почти таким же, но он сокращается ДО того, как слот будет вызван механизмом qt. Первая часть серии статей о том, как это сделать, показала, как я решил эту часть проблемы:

http://crazyeddiecpp.blogspot.com/2011/01/quest-for-sane-signals-in -qt-step-1.html

Это мой старый блог. Создайте новый в моем профиле, если хотите увидеть другую странную фигню.

8
задан Paul Roub 14 January 2016 в 19:06
поделиться