Qt: перенести метод базового класса в слоты производного класса - PullRequest
1 голос
/ 10 октября 2011

У меня есть класс, который наследуется от QWidget и класса модели.Судя по моим прочтениям, я не могу получить класс модели для наследования от QObject.

class PageWidget : public QWidget,
        public MyModelClass
{
...
};

класс модели MyModelClass уже имеет метод для установки таких свойств, как setWidth (bool).Кажется, я не могу использовать этот метод непосредственно в качестве слотов.Если я заявляю:

QObject :: connect (кнопка, SIGNAl (dataChanged (bool)), this, SLOT (setWidth (bool)));

Qt жалуется во время выполнения, что нет слота setWidth(BOOL).Я должен вручную добавить каждый метод в PageWidget, который просто вызывает один и тот же метод MyModelClass.

Есть ли способ перенести базовые методы в слоты без повторного выделения каждого метода?

1 Ответ

5 голосов
/ 10 октября 2011

QMetaObject (часть Qt, которая позволяет вам использовать слоты) и множественное наследование не смешиваются.Ваше решение создания «проходных» слотов - это способ его решения.Однако, если вам не нужно выполнять множественное наследование, я бы этого не делал.На первый взгляд кажется странным, что PageWidget является производным как от виджета, так и от модели.Вероятно, имеет больше смысла, чтобы вместо этого она содержала модель.

...