2010-02-26 5 views
2

Я установил Qt и Qt для плагина VS. Все работает нормально, приложения UI компилируются и запускаются нормально, но для подключения сигналов и слотов нет. У меня есть Q_OBJECT в моем классе и для подключения Я использую этот код в конструкторе:Qt в визуальной студии: соединительные слоты и сигналы не работают

connect(ui.mainTableView, SIGNAL(activated(const QModelIndex &)), 
     this, SLOT(showDetail(const QModelIndex &))); 

EDIT:

метод showDetail:

void MyClass::showDetail(const QModelIndex &index) 
{ 
    this->setWindowTitle("it works"); 
} 

заголовок окна не изменяется, и точка останова не достигнута ,

moc-файлы создаются в каталоге сгенерированных файлов, но moc-файл этого класса пуст (другие нет), я думаю, что это потому, что класс не имеет сигнала, а только один слот.

даже соединения, созданные конструктором, не работают и вызов метода connect возвращает true.

+0

Список ошибок должен помочь. опубликуйте его. – Mike

+0

Вы должны опубликовать свой результат в качестве ответа, а не как часть вопроса. –

+0

Caleb Huitt - cjhuitt: сделано. – Steve

ответ

0

РЕЗУЛЬТАТ:

О нет, оказывается, чтобы быть глупый вопрос, спасибо всем, все ответы подтолкнули меня к решению, но последний шаг должен был узнать, что на моих деталях платформы активируются только дважды -ключешь, не одинока. К сожалению

2

У вас есть moc, работающий правильно? Это объясняет, почему connect не делает свое дело, но все остальное ...

+0

moc-файлы генерируются в каталоге 'Generated Files', но moc-файл этого класса пуст (другие нет), я думаю, что это потому, что класс не имеет сигнала, а только один слот. – Steve

+0

moc_MyClass.cpp не должен быть пустым, даже если ваш класс пуст, вы наследовали 'MyClass' из' QObject'? – Paul

+0

Да, он наследуется от QMainWindow. (Это действительно странно.) – Steve

3

Удалить имена переменных из SIGNAL и SLOT макросов:

connect(ui.mainTableView, SIGNAL(activated(const QModelIndex &)), 
    this, SLOT(showDetail(const QModelIndex &))); 

Для получения более подробной информации, прочитайте документацию по QObject::connect тщательно.

+0

Это похоже на правильный ответ. – Skilldrick

+0

К сожалению, для меня это не работает :-( – Steve

+0

Вы отметили свой 'MyClass :: showDetail' как слот в определении класса MyClass? – Paul

0

В Visual Studio 2012, при попытке использовать

connect(plot->xAxis, SIGNAL(rangeChanged(QCPRange)), plot->xAxis2, SLOT(setRange(QCPRange))); 

я получаю ошибки для plot и SIGNAL.

Это связано с неправильным подключением Visual Studio. Он нашел connect в winsock.h.

Чтобы исправить ошибки, я использовал QObject пространство имен следующим образом:

QObject::connect(plot->xAxis, SIGNAL(rangeChanged(QCPRange)), plot->xAxis2, SLOT(setRange(QCPRange))); 

Для справки, вот информация о ошибках.

Для первого plot аргумента ошибка:

ERROR: argument of type "QCPAxis*" is incompatible with parameter of type "Socket". 

Для первого SIGNAL ошибка:

ERROR: argument of type "cosnt Char*" is incompatible with parameter of type "const sockaddr*". 

Для второго plot аргумента ошибка является:

ERROR: argument of type "QCPAxis*" is incompatible with parameter of type "int". 

Для второго SIGNAL t погрешность составляет:

ERROR: too many arguments in function call.