我正在尝试将插件创建的标签与我的应用中另一个插件创建的动作相关联。因此,在我的应用程序找到并加载两个插件后,我尝试连接它们,并在这里应用程序崩溃。
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");
}
每次app查找并加载插件时,它会增加一个名为verify(一个整数)的变量,如果它的值为2,那么我可以连接这两个小部件
if (verify == 2)
connect(myAction->getAction(), SIGNAL(triggered()),myLabel, SLOT(setLabelText()));
答案 0 :(得分:1)
如果在遇到该行时崩溃,我猜是从getAction
或myLabel
返回的指针未初始化或者是否已经指向从来没有永远的土地。你能发布getAction()
的代码吗?您是否在达到此声明之前初始化myLabel
?
答案 1 :(得分:1)
你确定曾经调用过“newAction”方法吗?
在newAction方法
中的("created action");
行之前添加qDebug return myAction;
//编辑:
QObject::connect: Cannot connect (null)
向我们展示您的加载程序代码,因为我可以清楚地看到您当前的问题与您在之前的问题中“解决”的问题严格相关。