MainWindow (QMainWindow) 수준에서 여러 자식으로부터 액세스 할 수있는 변수를 설정하려고합니다. 문제는 자녀 (또는 손자)로부터 액세스하려고 할 때마다 세그먼트 오류가 발생합니다.자식 클래스의 QMainWindow 변수에 액세스 할 수 없습니다.
다음은 관련 코드의 최대 모의입니다 :
//MainWindow.h
...
public:
int getVariable();
void setVariable(int i);
...
private:
int globalInt;
SomeWidget *myWidget;
//MainWindow.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
...
this->globalInt = 10;
myWidget = new SomeWidget();
myWidget->setParent(this);
....
}
int getVariable()
{
return this->globalInt;
}
void setVariable(int i)
{
this->globalInt = i;
}
...
//SomeWidget.cpp
...
int x = (static_cast<MainWindow*>(this->parent()))->getVariable(); //Causes Segfault
...
솔직히 내가 잘못 뭘하는지 모르겠어요. 나는 부모에게 새로운 MainWindow 포인터를 만들고 캐스팅하려고 시도했다. 나는 "global"int public을 public으로 만들고 직접 접근하는 등의 시도를 해왔다.
에 시도 [qobject_cast] (http://developer.qt.nokia.com/doc/qt-4.8/qobject.html#qobject_cast)를 사용하고'qDebug() << this-> parent()'를 시도하십시오. 그것은 무슨 일이 일어 났는지 알아내는 데 도움이 될 것입니다. – graphite
코드에서 마지막 줄은 어디입니까? 부모님이 설정하지 않으므로 배우가 추락합니다. 나는 그런 식으로 부모님을 만날 것을 권한다. 대신 부모 위젯이 그 값을 자식에게 넘겨 주도록 권한다. –
마지막 줄이 코드에서 더 아래에 있습니다. 나는 부모가 설정되었는지 확인했다 - 새로운 SomeWidget (this). – giraffee