2014-10-10 54 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添加为您班级的成员。

    ​​
  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要你。 – 2014-10-11 14:04:52