Как помешать открыть окно много раз.
Смотрите следующее изображение:
То, что я хочу, это если окно все еще открыто, не открывает то же самое окно еще раз, кроме как после закрытия открытого окна.
Наконец, код:
void Widget::on_search_btn_clicked(){
searchItem *searchBox = new searchItem;
searchBox->setModal(false); // <--- I want this as it is
searchBox->show();
searchBox->activateWindow();
}
Решение состоит в том, чтобы:
добавлять searchItem *searchBox
как член вашего класса.
private:
searchItem* m_searchBox;
Инициализировать с new searchItem()
в конструкторе.
Widget::Widget() {
...
m_searchBox = new searchItem();
}
Вызов void Widget::on_search_btn_clicked()
и использовать функции на m_searchBox
(следовательно, это единственное окно, которое будет открыто, даже если оно уже открыто)
void Widget::on_search_btn_clicked(){
m_searchBox->setModal(false);
m_searchBox->show();
m_searchBox->activateWindow();
}
Удалить в деструкторе
Widget::~Widget() {
...
delete m_searchBox;
}