Приложение Qt падает при попытке соединить два виджета - PullRequest
0 голосов
/ 12 декабря 2011

Я пытаюсь связать ярлык, созданный плагином, с действием, созданным другим плагином в моем приложении. Поэтому после того, как приложение находит и загружает оба плагина, я пытаюсь подключить их, и здесь происходит сбой приложения.

connect(myAction->getAction(), SIGNAL(triggered()),myLabel, SLOT(setLabelText()));

myAction-> getAction () - этот метод возвращает указатель созданного действия

setLabelText () - должен изменить текст метки

Если я удаляю эту строку, мое приложение работает нормально, действие добавляется в меню, а метка появляется в окне.

Методы из плагина, который возвращает действие

QAction* ActionPlugin::newAction() {

    myAction = new QAction("Show text",this);

    return myAction;
}

QAction* ActionPlugin::getAction() {

 return myAction;

}

Методы плагина, которые возвращают метку

QLabel* LabelPlugin::newLabel() {

    label = new QLabel("This plugin works");

    return label;
}

void LabelPlugin::setTextforLabel() {

    label->setText("This plugin works fine");

}

Каждый раз, когда приложение находит и загружает плагины, оно увеличивает переменную с именем verify (целое число), если ее значение равно 2, тогда я могу соединить эти два виджета

if (verify == 2)
               connect(myAction->getAction(), SIGNAL(triggered()),myLabel, SLOT(setLabelText()));

Ответы [ 2 ]

1 голос
/ 16 декабря 2011

Вы уверены, что метод "newAction" когда-либо вызывался?

добавить qDebug ("created action"); перед return myAction; строкой в ​​методе newAction

// РЕДАКТИРОВАТЬ:

QObject :: connect: невозможно подключиться (ноль)

Покажите нам свой код загрузчика, потому что я ясно вижу, что ваша текущая проблема строго связана с проблемой, которую вы "решили" в предыдущем вопросе.

1 голос
/ 12 декабря 2011

Если происходит сбой , когда он попадает в эту строку , я бы предположил, что либо указатель, возвращаемый из getAction, либо myLabel неинициализирован, либо остался указателем на никогда и никогда не приземляющийся , Не могли бы вы опубликовать код для getAction()? Вы инициализируете myLabel до того, как этот оператор будет достигнут?

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