检查对话框/窗口小部件/窗口是否仍然打开以防止重复

时间:2014-10-10 22:07:11

标签: c++ qt qt5 duplication

如何防止多次打开一个窗口。

见下图:

我想要的是,如果窗口仍然打开,除了关闭打开的窗口后再次打开同一个窗口。

最后,代码:

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

2 个答案:

答案 0 :(得分:3)

解决方案是:

  1. 添加searchItem *searchBox作为您班级的成员。

    private:
        searchItem* m_searchBox;
    
  2. 在构造函数中使用new searchItem()进行初始化。

    Widget::Widget() {
        ...
        m_searchBox = new searchItem();
    }
    
  3. 致电void Widget::on_search_btn_clicked()并使用m_searchBox 上的功能(因此这是唯一一个将被打开的窗口,即使它已经打开)

    void Widget::on_search_btn_clicked(){
        m_searchBox->setModal(false);
        m_searchBox->show();
        m_searchBox->activateWindow();
    }
    
  4. 在析构函数中删除

    Widget::~Widget() {
        ...
        delete m_searchBox;
    }
    

答案 1 :(得分:2)

  • 在课堂上存储搜索项目并创建一次,或
  • 打开后禁用按钮,关闭时启用,或
  • 制作对话模式