Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] no matching function for QObject::connect() 
V
    Опции темы
kemiisto
  Дата 17.6.2011, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 8
Всего: 160



Ругается на
Код

connect(&mm_, SIGNAL(geometryChanged()),
              &tab->moleculeEditor(), SLOT(updateGL()));

Код

error: no matching function for call to 'MainWindow::connect(Chemistry::MolecularMechanics*, const char*, Render::MoleculeEditor*, const char*)'

Не нравится ему вторая часть, связанная со слотом. Такое ощущение, что он не считает Render::MoleculeEditor наследником QObject. Но это так. Render::MoleculeEditor <- Render::MoleculeViewer <- QGLViewer <- QGLWidget <- QWidget <- QObject.

Что за %^$#@?

Добавлено через 7 минут и 26 секунд
Virtual inheritance with QObject is not supported.
Что значит "virtual inheritance"? И что значит "is not supported"?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Sartorius
Дата 17.6.2011, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Может явно преобразовать к QObject*?
ЗЫ
А ты и МД движек на Qt пишешь или только редактор?
PM MAIL ICQ   Вверх
kemiisto
Дата 17.6.2011, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 8
Всего: 160



Цитата(Sartorius @  17.6.2011,  11:35 Найти цитируемый пост)
А ты и МД движек на Qt пишешь или только редактор?

Только редактор.

Цитата(Sartorius @  17.6.2011,  11:35 Найти цитируемый пост)
Может явно преобразовать к QObject*?

Никогда же не было нужно! Нет, тут что-то другое.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Sartorius
Дата 17.6.2011, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Цитата(kemiisto @  17.6.2011,  13:26 Найти цитируемый пост)
Virtual inheritance with QObject is not supported.
Что значит "virtual inheritance"? И что значит "is not supported"? 
 
Ромбовидная иерархия где-то. Ты наверно явно пытаешься MoleculeEditor от QObject отнаследовать...

PM MAIL ICQ   Вверх
borisbn
Дата 17.6.2011, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата(kemiisto @  17.6.2011,  12:26 Найти цитируемый пост)
Не нравится ему вторая часть, связанная со слотом

почему так уверенно ?
нет ли у Chemistry::MolecularMechanics и Render::MoleculeEditor множественного наследования ? Если есть, то предок, у которого предок QObject должен быть первым в списке
Код
class A : public MyIFace, public QWidget // <---- НЕПРАВИЛЬНО

Есть ли в h-никах связываемых классов макрос Q_OBJECT ?
Попробуй сделать
Код

QObject * o1 = &mm_;
QObject * o2 = &tab->moleculeEditor();

что говорит ?

Добавлено через 2 минуты и 24 секунды
Цитата(Sartorius @  17.6.2011,  12:46 Найти цитируемый пост)
Цитата(kemiisto @  17.6.2011,  13:26 )Virtual inheritance with QObject is not supported.Что значит "virtual inheritance"? И что значит "is not supported"? 

Sartorius, откуда цитата ???


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
kemiisto
Дата 17.6.2011, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 8
Всего: 160



Цитата(borisbn @  17.6.2011,  11:47 Найти цитируемый пост)
почему так уверенно ?

Если изменить вторую часть - компилируется.

Цитата(Sartorius @  17.6.2011,  11:46 Найти цитируемый пост)
Ромбовидная иерархия где-то. Ты наверно явно пытаешься MoleculeEditor от QObject отнаследовать...

Нет. Нет у меня такого. Я просто в доке нашёл. Не знал, что это.

Цитата(borisbn @  17.6.2011,  11:47 Найти цитируемый пост)
нет ли у Chemistry::MolecularMechanics и Render::MoleculeEditor множественного наследования ?

Нету. Ну, то есть у QWidget там есть, но там всё правильно.

Цитата(borisbn @  17.6.2011,  11:47 Найти цитируемый пост)
Есть ли в h-никах связываемых классов макрос Q_OBJECT ?

Да есть.

Цитата(borisbn @  17.6.2011,  11:47 Найти цитируемый пост)
что говорит ?

На второй строчке пишет:
Код

error: cannot convert 'Render::MoleculeEditor*' to 'QObject*' in initialization



--------------------
PM MAIL WWW GTalk Jabber   Вверх
Sartorius
Дата 17.6.2011, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Можно еще посмотреть, что moc на выходе дает.  smile

Добавлено через 5 минут и 52 секунды
Да, еще бывает qmake помогает в таких случаях, что б makefile обновился
PM MAIL ICQ   Вверх
kemiisto
Дата 17.6.2011, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 8
Всего: 160



Цитата(Sartorius @  17.6.2011,  11:57 Найти цитируемый пост)
Можно еще посмотреть, что moc на выходе дает.

Ничего. Не доходит до moc, ошибка раньше.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
borisbn
Дата 17.6.2011, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата(kemiisto @  17.6.2011,  12:26 Найти цитируемый пост)
Render::MoleculeEditor <- Render::MoleculeViewer <- QGLViewer <- QGLWidget <- QWidget <- QObject.

давай проверим:
Код

Render::MoleculeEditor * o = &tab->moleculeEditor();
Render::MoleculeViewer * parent_1 = o;
QGLViewer * parent_2 = o;
QWidget * parent_3 = o;
QObject * parent_4 = o; // хотя нет, это ужЕ проверяли



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
kemiisto
Дата 17.6.2011, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 8
Всего: 160



borisbn, я уже проверил. Ничто не работает. Кроме, естественно
Код
Render::MoleculeEditor * o = &tab->moleculeEditor();


Это сообщение отредактировал(а) kemiisto - 17.6.2011, 13:11


--------------------
PM MAIL WWW GTalk Jabber   Вверх
borisbn
Дата 17.6.2011, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата(kemiisto @  17.6.2011,  13:10 Найти цитируемый пост)
я уже проверил. Ничто не работает

значит однозначно © самизнаетекто Render::MoleculeEditor не является наследником Render::MoleculeViewer
выложи кусок (самое начало) описания класса Render::MoleculeEditor


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
kemiisto
Дата 17.6.2011, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 8
Всего: 160



Цитата(borisbn @  17.6.2011,  12:14 Найти цитируемый пост)
Render::MoleculeEditor не является наследником Render::MoleculeViewer

Ну я же не совсем идиот.
Код

#ifndef RENDER_MOLECULE_EDITOR_H
#define RENDER_MOLECULE_EDITOR_H

#include "Render/RenderMoleculeViewer.h"

namespace Render
{
  class MoleculeEditor : public MoleculeViewer
  {
    Q_OBJECT

  public:
    MoleculeEditor(QWidget* parent = 0);

  public slots:
    void setAtomSymbol(const QString& atomSymbol);
    QString atomSymbol() const;

  private:
    void mouseLeftButtonWithCtrlPressEvent(QMouseEvent* e);
    void mouseLeftButtonWithCtrlReleaseEvent(QMouseEvent* e);
    // added atom atomic number
    int atomicNumber_;
    int atomSelectedBeforeIndex_;
  };
}

#endif // RENDER_MOLECULE_EDITOR_H



--------------------
PM MAIL WWW GTalk Jabber   Вверх
math64
Дата 17.6.2011, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Вставьте #error в заголовок. Если компилятор не будет ругаться на #error, значит заголовок берётся откуда-то из другого места.
PM   Вверх
kemiisto
Дата 17.6.2011, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 8
Всего: 160



Цитата(math64 @  17.6.2011,  12:44 Найти цитируемый пост)
Вставьте #error в заголовок. Если компилятор не будет ругаться на #error, значит заголовок берётся откуда-то из другого места.

Не ругается. Ну так он и не доходит до файла с исходным кодом, где этот заголовок включен. И брать этот заголовок больше неоткуда.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
bsa
Дата 17.6.2011, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



kemiisto, может стоит включить файл в тот cpp, в котором проблемный connect? Подозреваю, что у тебя используются предопределения.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0602 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.