首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试访问对象方法时的C++ Qt分割错误

尝试访问对象方法时的C++ Qt分割错误
EN

Stack Overflow用户
提问于 2015-12-09 19:32:55
回答 1查看 780关注 0票数 0

我正在学习Qt,我想出了一个问题。我需要一些帮助,在这里我尝试更改变量并调试它,但是还没有找到解决方案。我将提供一些代码来理解我遇到的问题

类文件中的

代码语言:javascript
运行
复制
class ColorButton : public QToolButton
{
    Q_OBJECT
 public:
   explicit ColorButton(const QColor &color, QWidget *parent = 0);
   void testMethod();
};

我的ColorButton.cpp文件是这样的

代码语言:javascript
运行
复制
ColorButton::ColorButton(const QColor &color, QWidget *parent)
{
    //some code
}

void ColorButton::testMethod()
{
   //This is
   //a test method
}

我正在尝试从另一个类访问这个testMethod()。

从这个类中,头文件是Toolbar.h

代码语言:javascript
运行
复制
class ToolBar : public QToolBar
{
    Q_OBJECT
public:
    explicit ToolBar(const QMap<ToolsEnum, QAction*> &actionMap, QWidget *parent = 0);

private:
    void setToolbar(); //initialize items
    ColorButton *test; //-----

public slots:
    void setMainColorView();
}

Toolbar.cpp文件如下所示

代码语言:javascript
运行
复制
ToolBar::ToolBar(const QMap<ToolsEnum, QAction *> &actionMap, QWidget *parent) :
QToolBar(tr("Tools"),parent), actionMapVar(actionMap)
{
    setToolbar();
}

void ToolBar::setToolbar()
{
  test = new ColorButton(QColor("#8C001A"));
}

void ToolBar::setMainColorView()
{
 test->testMethod();
}
}

当我将test->testMethod();放入setToolbar()中时,程序可以工作,但我希望在setToolbar()中创建对象,并在setMainColorView().中调用方法。

到目前为止,我已经尝试将Color按钮变量公之于众,我也尝试在构造函数中初始化名为test的对象,但两者都不起作用。

现在,使用此代码,我得到的错误是“由于接收到来自操作系统的信号而导致的次等停止。信号名称: SIGSEGV信号含义:分段故障”,箭头指向test->testMethod()。我不知道如何解决,任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2015-12-10 07:16:11

我一直看错地方了。我通过将工具栏对象传递到调用setMainColorView()的类来解决这个问题。在该类中,我为工具栏对象创建了一个局部变量,分配如下。然后起作用了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34187475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档