2013-07-17 2 views
0

의 동적 할당 내가 조금 질문이 있습니다 :Qt는, 메모리

ajoute *az = new ajoute; 
QVBoxLayout *layoutPrincipal = new QVBoxLayout; 

: 나는 모든 시간이 QPushButon에 사용자가 클릭 새로운 객체가 자신의 포인터로 생성되는 작은 프로그램을 만들어, 여기에 내 코드입니다 문제는 생성 된 모든 객체가 같은 이름을 가지므로 객체를 삭제하려면 오류가있을 가능성이 있습니까?

P.S : 내 나쁜 영어 죄송합니다, 난

+1

:

delete v[0]; // example 

그냥뿐만 아니라 벡터 내부 포인터를 삭제하려면 기억 여기에 문맥이 없습니다. 'ajoute' 란 무엇이고, 여러분이 만든 인스턴스로 무엇을합니까? –

+0

나는 컨테이너에 넣지 않고 인스턴스 만 생성한다고 말할 수 있습니까? – user1810087

+0

답을 초안하려고했지만 문맥이 분명히 부족했습니다. 프랑스어가 아닌 스피커의 경우 "ajoute"는 "add"를 의미합니다. – Bruce

답변

2

문제는 아마 오류가있을 것이다 내가 거기 개체를 삭제 싶다면 생성 된 모든 객체가 같은 이름을 가지고있다?

동적으로 할당 된 개체 그룹을 만들고 포인터를 저장하는 방법을 모르는 것 같습니다. 가장 간단한 방법은 QVector<ajoute*>를 사용하여 동적으로 할당 된 개체를 저장하는 것입니다 : 때마다 당신이 ajoute을 만들 지금

QVector<ajoute*> v; 

를 그냥 수행 벡터의 끝 부분에 포인터를 추가합니다

v.push_back(new ajoute); 

(컨테이너). 그럼 당신은 수행하여 순서대로 액세스 할 수 있습니다

v[0]; // first 
v[1]; // second 
v[2]; // third 

을하고 분명히 당신이 그들을 삭제할 수 있습니다

v.remove(0); 
+0

감사합니다. 좋은 생각인데, 이것이 내가 필요한 대답이라고 생각합니다. 그래서 "ajoute"객체 속성 테이블을 만들 필요가있는 경우, 기본 윈도우에있는 exemple QString 변수에 "ajoute"속성 값을 복사하고 oder 프로그램에서 다른 테이블을 생성하고 " ajoute "객체 속성? –

+0

@ DanSnow, "ajoute object attributes"는 무엇을 의미합니까? – Shoe

+0

대단히 감사합니다.하지만 저는 creat 객체에 대한 아이디어를 포기할 것이라고 생각합니다. 저는 간단한 컨테이너를 사용할 것입니다. 누군가가 관심이 있다면 테스트 용 소프트웨어 베타 버전 (암호 관리자)을 전달할 수 있습니다. –

2

개체 그래서 다음 예는 이전에 대해 "기억"하지 않을 것이다, 아마 스택에 프랑스어입니다. 설명을 세밀하게 조정하려면 더 많은 코드가 필요합니다. 클래스에서

  • 사용 속성 (또는 많은) 및 (따라서 실제로 이전 인스턴스를 해제)
  • (Qt는 방법을
  • 사용 QSharedPointer를 작성하기 전에 삭제하고 뾰족한 데이터를 재설정 :

    일반적인 솔루션은)는 "부모 QObject"의 객체 자식을 만듭니다. 객체 트리의 루트가 삭제되면 계단식으로 삭제됩니다.

+0

사실 나는 아직 프로그램을 만들지 않았고, 어떻게하는지 생각했습니다. –

+0

사실 나는 아직 프로그램을 만들지 않았고, 나는 그 일을하는 방법을 생각하고 있었다. 프로그램은 다음과 같이 작동합니다 : 1 - 사용자가 QLineEdit에 텍스트를 쓰십시오 2 - 텍스트가 변수에 저장됩니다 3 - "ajoute"객체가 생성됩니다 4 - 변수의 값이 "ajoute"객체에 전송됩니다 5 - "ajoute"객체는 QLBoxLayout에 QLabel을 표시합니다. 6 - 다른 QLineEdit가 나타나고 사용자는 다른 "ajoute"객체를 만들 수 있습니다.마치 채팅처럼입니다 –

+0

'QStringList'에 문자열을 저장하고 어댑터로 'QStringListModel'을 사용하여이 목록을 'QListView'에 표시하려고합니다. http://doc.qt.digia.com/4.7/model-view-programming.html#view-classes를 읽는 것에 대해 조언합니다. – Bruce