gpt4 book ai didi

尝试访问对象的方法时出现 C++ Qt 段错误

转载 作者:行者123 更新时间:2023-11-28 05:55:42 24 4
gpt4 key购买 nike

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

在我的 ColorButton.h 类文件中

class ColorButton : public QToolButton
{
Q_OBJECT
public:
explicit ColorButton(const QColor &color, QWidget *parent = 0);
void testMethod();
};

我的ColorButton.cpp文件是这样的

ColorButton::ColorButton(const QColor &color, QWidget *parent)
{
//some code
}

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

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

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

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文件是这样的

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() 的箭头。我不知道如何解决它,任何帮助将不胜感激

最佳答案

我一直在看错地方。我通过将我的工具栏对象传递到我从中调用 setMainColorView() 的类来解决这个问题。在那个类中,我创建了工具栏对象的局部变量,并分配了它。然后就成功了。

关于尝试访问对象的方法时出现 C++ Qt 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34187475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com