현재 공개 QWidgets 인 3 개의 클래스가 있습니다. -> x, y, z는 모두 q 위젯입니다.Qt : Q 위젯 및 포인터
내 메인 윈도우에는 x, y, z에 대한 포인터가 있습니다. > 무효 전환의 원인 -이 deleteScreen(&m_x);
:
그래서 회원 :
X* m_x;
Y* m_y;
Z* m_z;
멤버 함수는 :로
void MainWindow::deleteScreen(QWidget** widget)
{
if(widget != NULL)
{
delete widget;
widget = NULL;
}
}
했다.
deleteScreen
매개 변수를 QWidget* widget
으로 변경하고 deleteScreen(m_x)
으로 호출하면 메모리가 삭제되지만 m_x
은 NULL로 설정되지 않습니다. (로컬 변수, 위젯 만)
->deleteScreen
함수가 주어진 위젯을 삭제하고 멤버 변수의 값을 NULL에 두는 방법이 있습니까?
감사합니다.
경우 * 위젯을 삭제할 수 :
는 코드에 대한 대안으로 다음을 시도 * widget = NULL;}' –QWidgets을 삭제해야합니까? AFAIK, Qt는 일종의 가비지 수집을 구현합니다. –
@AlexFarber Qt가 가비지 콜렉션을 가지고 있다는 것을 몰랐습니다. 하지만 솔루션이 어떻게 작동하지 않을까요? 나는 그런 것을 시도했지만 deleteScreen (& m_x) -> invalid conversion 함수를 호출 할 수 없다. – secondVISION