Я изучаю 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(). Я понятия не имею, как это решить, любая помощь будет оценена