2014-10-10 9 views
1

창을 여러 번 열지 못하게하는 방법.대화 상자/위젯/창이 여전히 복제를 방지하기 위해 열려 있는지 확인하십시오.

는 다음 이미지보기 :

입니다 내가 원하는

경우 폐쇄 열린 창 이후를 제외하고 다시 한번 같은 창을 열지 않습니다 여전히 열려 창.

마지막으로, 코드 :

void Widget::on_search_btn_clicked(){ 
    searchItem *searchBox = new searchItem; 
    searchBox->setModal(false); // <--- I want this as it is 
    searchBox->show(); 
    searchBox->activateWindow(); 
} 

답변

3

해결책은 다음과 같습니다.

  1. searchItem *searchBox을 클래스 구성원으로 추가하십시오.

    private: 
        searchItem* m_searchBox; 
    
  2. 생성자에서 new searchItem()으로 초기화하십시오. m_searchBox(결과적으로이 열 수있는 유일한 창이 이미 열려있어 경우에도입니다)

    void Widget::on_search_btn_clicked(){ 
        m_searchBox->setModal(false); 
        m_searchBox->show(); 
        m_searchBox->activateWindow(); 
    } 
    
  3. Widget::Widget() { 
        ... 
        m_searchBox = new searchItem(); 
    } 
    
  4. 전화 void Widget::on_search_btn_clicked() 사용 기능 소멸자에서 삭제를

    Widget::~Widget() { 
        ... 
        delete m_searchBox; 
    } 
    
2
  • 저장 클래스에 searchitem 한 번 만들거나 개봉 후
  • 해제 버튼, 폐쇄, 또는
  • 때 활성화 대화 모달을
+0

나는 또한 t 행크. –