Qt в visual studio: подключение слотов и сигналов не работает - PullRequest
2 голосов
/ 26 февраля 2010

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

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-файлы создаются в каталоге Generated Files, но moc-файл этого класса пуст (другие нет), я думаю, это потому, что у класса нет сигнала, а только один слот.

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

Ответы [ 4 ]

3 голосов
/ 26 февраля 2010

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

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

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

2 голосов
/ 26 февраля 2010

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

1 голос
/ 05 ноября 2015

В 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 ошибка:

ERROR: too many arguments in function call.
0 голосов
/ 27 февраля 2010

РЕЗУЛЬТАТ:

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

...