Qt: Подключение SIGNAL к слоту в 2 разных окнах - PullRequest
1 голос
/ 05 февраля 2012

Я схожу с ума, пытаясь найти проблему здесь.У меня есть главное окно и окно типа формы, выполненное в Qt.Я использую дополнение Visual Studio 2010.По какой-то причине мой слот никогда не вызывается в главном окне;однако сигнал, кажется, излучается.

Вот что я сделал:

Это форма:

class ScalerValuesWindow : public QWidget
{
    Q_OBJECT

private:
    Ui::ScalerValuesWindow ui;

    // Variables
    std::vector<int> scalerValues;

public slots:
    void storeScalerValues();

signals:
    void ScalerValues(std::vector<int>);

public:
    ScalerValuesWindow(QWidget *parent = 0);

};

void ScalerValuesWindow::storeScalerValues()
{
    emit ScalerValues(scalerValues);
    hide();
}

Тогда вот моя линия подключения главного окна вмой конструктор:

scalerValuesWindow = new ScalerValuesWindow;
connect(scalerValuesWindow, SIGNAL(ScalerValues(std::vector<int>)), this, SLOT(RetrieveScalerValues(std::vector<int>)));

Это в объявлении класса моего главного окна:

public slots:
    void RetrieveScalerValues(vector<int> scalerValues);

И это слот:

void RelayduinoGuiThreading::RetrieveScalerValues(vector<int> scalerVals)
{
    scalerValues = scalerVals;
}

Я объявил Q_OBJECT ви то и другое.Я понятия не имею, что может быть причиной этого.

Любой совет будет принят с благодарностью.

1 Ответ

1 голос
/ 05 февраля 2012

Вы должны определить свой слот как:

public slots:
  void RetrieveScalerValues(std::vector<int> scalerValues);
                            ^^^

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

Не используйте using namespace std; в своих заголовках, это плохая практика в любом случае (тянет это огромное пространство имен всем пользователям этого заголовка, что невежливо).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...