2011-01-27 2 views
0

QLabel에서 상속 가능한 사용자 지정 클래스를 드래그 할 수있게하려고합니다. 아이가 작성되지 않습니다QT 끌어서 놓기 - qobject_cast를 사용하여 임시 QLabel 만들기

QLabel *child = qobject_cast{QLabel*}(this->childAt(event->pos()));

NOTE: this line has carrots instead of brackets, but stack overflow interprets it and takes it out

if (!child) 
    return; 

, 나는 할 수 있습니다이를 무렵, 나는 클래스의 내부에 다음 코드를 사용하여 현재 마우스 위치에서 클래스의 임시 복사본을 만들려고 해요 'mousePressEvent 왜 그런지 알아 내지 못 하죠. 어떤 아이디어? 코드가 당신의 QLabel 유도 된 클래스 내 경우

+0

qobject_cast (this-> childAt (event-> pos()))'을 (를) 사용 하시겠습니까? 그것이 오타이거나 코드의 일부인지 확실하지 않습니다. –

+0

예, 그게 제가 의도 한 바 였지만 처음에는 표시되지 않습니다. 어떻게 그걸 보여 주려고 했니? – CoutPotato

+0

블록을 코드로 표시하거나 (코드 단추를 사용하거나 그 앞에 네 개의 공백을 추가하는 경우) 글리프보다 작고 큰 글리프를 사용할 수 있습니다. –

답변

2

, childAt() 오른쪽 함수가 아닙니다. 그러면 라벨에 포함 된 하위 위젯이 반환됩니다. 그것은 당신이하려고하는 것처럼 보이지 않지만, 오해하는 경우에 나를 바로 잡습니다.

복사 할 개체는 this이지만 "복사"는 C++에서 많은 의미를 가질 수 있으며 정확하게 수행하려고하는지 확신 할 수 없습니다. clone()이라는 메서드를 사용하여 클래스의 새 인스턴스를 만들고 사용자가 재현해야하는 값을 채우는 등의 방법으로 직접 구현해야 할 것입니다.

그러나 복사가 필요없는 드래그 앤 드롭 기능을 구현하는 데 더 좋은 방법이 있다고 생각됩니다.

+0

와우, 어리석은 감시 였어. 나는 아이가 어디에서 왔는지 분명히 알 수있는 코드를 재사용하려고했다. 응답 주셔서 감사합니다! – CoutPotato