Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: daimon от Октября 10, 2012, 21:30



Название: [решено] Bug ли Qt 4.8.3 clicked signal QPushButton
Отправлено: daimon от Октября 10, 2012, 21:30
Код
C++ (Qt)
#include "m_metod_qt.h"
 
m_metod_qt::m_metod_qt(QWidget *parent, Qt::WFlags flags)
: QWidget(parent, flags)
{
ui.setupUi(this);
ui.plainTextEdit->setWordWrapMode(QTextOption::NoWrap);
connect(ui.pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));
}
 
m_metod_qt::~m_metod_qt()
{
 
}
 
 
void m_metod_qt::on_pushButton_clicked()
{
qDebug()<<"test";
QString fname = QFileDialog::getOpenFileName(this,"","","");
m_metod sample(fname);
sample.metod();
ui.plainTextEdit->appendPlainText(sample.answer().c_str());
 
}
 
проблема в том, что при клике раз на кнопку, срабатывает 2 раза сигнал: один раз - открылся диалог, закрываю диалог и снова открывается второй раз диалог. Баг ли это?


Название: Re: Bug ли Qt 4.8.3 clicked signal QPushButton
Отправлено: V1KT0P от Октября 10, 2012, 21:39
Дело в том, что слоты начинающиеся на "on_" автоматически коннектятся. Для действия кнопки clicked автоматом будет искаться слот on_BUTTONNAME_clicked() и автоматически подключаться. Закомментируй это и будет работать нормально:
Код
C++ (Qt)
connect(ui.pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));


Название: Re: Bug ли Qt 4.8.3 clicked signal QPushButton
Отправлено: daimon от Октября 10, 2012, 21:49
Дело в том, что слоты начинающиеся на "on_" автоматически коннектятся. Для действия кнопки clicked автоматом будет искаться слот on_BUTTONNAME_clicked() и автоматически подключаться. Закомментируй это и будет работать нормально:
Код
C++ (Qt)
connect(ui.pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));

спс, раньше с 4.7 нужно ещё было спец функцию вызывать для такого коннекта по on_, сейчас уже дальше пошло, я и не заметил))


Название: Re: [решено] Bug ли Qt 4.8.3 clicked signal QPushButton
Отправлено: kambala от Октября 10, 2012, 23:03
эта функция вызывается в setupUi