как я могу наследоваться и QWidget и QThread?

У меня есть класс как это

class GUI : public QWidget, public QThread

Когда я делаю вышеупомянутое, я получаю ошибки о сигналах соединения. The error says Reference to "connect" is ambiguous. Существует ли способ наследоваться от обоих?

Спасибо

7
задан Nejat 4 October 2014 в 10:41
поделиться

2 ответа

Вы не можете. И QWidget , и QThread наследуются (не виртуально) от QObject . Таким образом, у вас нет виртуального производного объекта, то есть двух копий QObject , что сбивает компилятор с толку. QObject был специально разработан таким образом. См .:

Есть некоторые, кто якобы обошел это (не могут найти ссылку прямо сейчас, но она есть в Google, у меня была такая же проблема две недели назад), но это в лучшем случае небезопасно.

Редактировать: лучшим способом, вероятно, было бы наследовать другой объект от QThread и сохранить этот объект в качестве члена в вашем классе GUI . Это способ обхода большинства людей в этом вопросе.

11
ответ дан 7 December 2019 в 01:19
поделиться

Вы не можете наследовать от нескольких QObject.

Вы можете унаследовать от одной и сделать другую переменной-членом и работать оттуда.

class GUI : public QWidget 
{
  QThread myThread;
};

Вы назвали свой класс GUI - это основной GUI вашей программы? См. Примеры в папке примеров Qt - у них есть примеры программ как в GUI , так и в Threads .

-1
ответ дан 7 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: