У меня есть класс как это
class GUI : public QWidget, public QThread
Когда я делаю вышеупомянутое, я получаю ошибки о сигналах соединения. The error says Reference to "connect" is ambiguous
. Существует ли способ наследоваться от обоих?
Спасибо
Вы не можете. И QWidget
, и QThread
наследуются (не виртуально) от QObject
. Таким образом, у вас нет виртуального производного объекта, то есть двух копий QObject
, что сбивает компилятор с толку. QObject
был специально разработан таким образом. См .:
Есть некоторые, кто якобы обошел это (не могут найти ссылку прямо сейчас, но она есть в Google, у меня была такая же проблема две недели назад), но это в лучшем случае небезопасно.
Редактировать: лучшим способом, вероятно, было бы наследовать другой объект от QThread и сохранить этот объект в качестве члена в вашем классе GUI
. Это способ обхода большинства людей в этом вопросе.
Вы не можете наследовать от нескольких QObject.
Вы можете унаследовать от одной и сделать другую переменной-членом и работать оттуда.
class GUI : public QWidget
{
QThread myThread;
};
Вы назвали свой класс GUI - это основной GUI вашей программы? См. Примеры в папке примеров Qt - у них есть примеры программ как в GUI , так и в Threads .