2013-06-14 1 views
0

음, 죄송하지만 QT에 대한 설명서를보고 있었지만 여전히 작동하지 않습니다. 원하는 것은 내가 가지고있는 것입니다. Mdi Area에 서브 윈도우를 추가하기위한 버튼이있는 것은 전화 번호부입니다. 버튼을 클릭하면 서브 윈도우를 추가 할 수 있습니다.하지만 클릭하면 5 번 클릭하면 동일한 윈도우가 열리 며, 그것을 만들고 싶습니다. 아무리 누르더라도 하나만 엽니 다.QT C++에서 QMdiSubWindow는 여러 창을 엽니 다.

여기에 그림이 있습니다. 빨간색으로 표시된 버튼을 클릭하면 중간에 해당 창이 열립니다. 내가 활성 창으로 설정하고 몇 가지 물건을 사용하여 노력했지만 아무 것도 아직 일한 적이 없다, 어떤 도움을 크게 주시면 감사하겠습니다.

link to the picture on imgur

답변

0

그것은 아주 간단합니다. 이미 만들어진 경우 다른 창을 만들지 마십시오.

QMdiSubWindow* subwindow; 

생성자에서 :

subwindow = 0; 

버튼의 OnClick 슬롯에서 : 헤더 파일에서

이 닫혀 때 서브 윈도우가 삭제되지 않습니다 기본적으로

if (!subwindow) { 
    subwindow = ui->mdi_area->addSubWindow(widget); 
} 
subwindow->show(); 
subwindow->setFocus(); 

따라서 동일한 객체를 다시 사용할 수 있습니다.

0

당신이 열기 전에 subWindowList 검사 수 :

bool is_open = false; 
    foreach(QMdiSubWindow *subw, ui->mdi_area->subWindowList()) 
    if (qobject_cast<YouWindowClass>(subw) != nullptr) is_open = true; 
관련 문제