试图访问对象的方法时出现C++Qt分段错误
C++ Qt Segmentation fault when trying to access method of an object
我正在学习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()的类中来解决这个问题。在那个类中,我制作了一个工具栏对象的局部变量,分配给它。然后它起了作用。
相关文章:
- qt C++命令行代码中的分段错误(核心转储)
- 对 QMainWindow 使用 std::unique_ptr 时退出时出现 QT 应用程序分段错误
- 如何避免在Qt项目中调用Python脚本时出现分段错误
- exec() 处的 Qt 分段错误
- 执行结束时QT QTest分段故障
- 链接 Qwt 库时 Qt 代码中的分段错误
- QT 5.6:对QGraphicsScene::addItem()的第二次调用中出现分段冲突
- Qt 信号在连接时导致分段故障
- 带有 QWidget 的分段错误构造函数.Qt/C++
- Qt:setScreenRect=分段故障
- Qt-C++字符串串联分段错误
- 在一个使用ffmpeg的非常简单的qt应用程序中出现分段错误
- Qt上的分段故障
- 析构函数 Qt QDialog 中的分段错误
- Qt Creator:通过SIGSEGV的分段错误(C++)
- Qt套接字写入分段故障
- 试图访问对象的方法时出现C++Qt分段错误
- Qt应用程序导致GLWidget.show();出现分段故障;
- Qt的调试器对分段错误有好处吗?
- Qt c++的分段故障