Russian Qt Forum
Апрель 19, 2024, 04:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: При нажатии на кнопку создается 2 окна  (Прочитано 4579 раз)
evgenm27
Гость
« : Март 22, 2017, 16:11 »

Здравствуйте, при нажатии на кнопку первое окно исчезает и появляется второе, при нажатии кнопки "назад" второе окно закрывается и появляется первое. Но при нажатии создается 2 окна, почему так происходит?

AppMainWindow.cpp
Код
C++ (Qt)
#include "appmainwindow.h"
#include "ui_appmainwindow.h"
#include "addwindow.h"
 
AppMainWindow::AppMainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::AppMainWindow)
{
   ui->setupUi(this);
 
   connect(ui->button_add,SIGNAL(clicked()),this,SLOT(on_button_add_clicked()));
}
 
AppMainWindow::~AppMainWindow()
{
   delete ui;
}
 
void AppMainWindow::on_button_add_clicked()
{
   AddWindow *win = new AddWindow(this);
   win->show();
   this->hide();
 
   connect(win,SIGNAL(signal_back_clicked()),this,SLOT(show()));
}

AddWindow.cpp
Код
C++ (Qt)
#include "addwindow.h"
#include "ui_addwindow.h"
 
AddWindow::AddWindow(QWidget *parent) :
   QDialog(parent),
   ui(new Ui::AddWindow)
{
   ui->setupUi(this);
   setLayout(ui->verticalLayout);
 
   connect(ui->button_back,SIGNAL(clicked()),this,SLOT(on_button_back_clicked()));
}
 
AddWindow::~AddWindow()
{
   delete ui;
}
 
void AddWindow::on_button_back_clicked()
{
   emit signal_back_clicked();
   close();
}
   
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Март 22, 2017, 16:43 »

думаю потому что соединение ui->button_add -> on_button_add_clicked() создаётся автоматически, и ты создаёшь его второй раз вручную. Слот будет вызван два раза.
Записан
evgenm27
Гость
« Ответ #2 : Март 22, 2017, 18:12 »

Закоментил коннект и действительно все заработало как надо. Спасибо! А не разъясните почему коннект срабатывает автоматически?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Март 22, 2017, 18:48 »

Закоментил коннект и действительно все заработало как надо. Спасибо! А не разъясните почему коннект срабатывает автоматически?

потому что setupUi() вызывает этот метод https://doc.qt.io/qt-5/qmetaobject.html#connectSlotsByName
Записан
evgenm27
Гость
« Ответ #4 : Март 22, 2017, 19:01 »

Закоментил коннект и действительно все заработало как надо. Спасибо! А не разъясните почему коннект срабатывает автоматически?

потому что setupUi() вызывает этот метод https://doc.qt.io/qt-5/qmetaobject.html#connectSlotsByName
Спасибо!
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Март 23, 2017, 06:24 »

У тебя ещё по каждому нажатию кнопки создаётся новое окно, не проверяется его существование. И затем оно не удаляется.
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.089 секунд. Запросов: 22.