LINUX.ORG.RU

Qt4 - два раза эмитится clicked() у QPushButton


0

0


программа простая, я особо не заморачиваюсь, ибо ненавижу граф. интерфейс. вот конструктор класса диалога:

frmMain::frmMain(QWidget *parent) : QDialog(parent)
{
setupUi(this);

connect( btnNew, SIGNAL( clicked() ), this, SLOT( AddChain() ) );
connect( btnEdit, SIGNAL( clicked() ), this, SLOT( EditChain() ) );
connect( btnDelete, SIGNAL( clicked() ), this, SLOT( DelChain() ) );
connect( btnStart, SIGNAL( clicked() ), this, SLOT( startChain() ) );
connect( lstChains, SIGNAL( selected(int) ), this, SLOT( checkState(int) ) );
connect( btnStop, SIGNAL( clicked() ), this, SLOT( stopChain() ) );
connect( pushButton6, SIGNAL( clicked() ), this, SLOT( loadFile() ) );
connect( pushButton6_2, SIGNAL( clicked() ), this, SLOT( saveFile() ) );

}

а это код, например, добавления цепочки:

void frmMain::AddChain()
{
frmEdit *dialog = new frmEdit;
lstChains->insertItem("New Chain");
edt_index = lstChains->count() - 1;
act = 0;
dialog->setValues(this, "New Chain", "1080", "", 0);
dialog->show();
}

и этот код вызывается дважды при нажатии на кнопку, и возникает два окошка frmEdit.

почему, интересно?


Попробуй #include <gtk/gtk.h> и g_signal_connect. Должно помочь.

xTERM ★★
()

вот что в ассистенте по этому поводу пишут, проверяй свой код может click() где-то зовёшь?

void QAbstractButton::clicked ( bool checked = false ) [signal]

This signal is emitted when the button is activated (i.e. pressed down then released while the mouse cursor is inside the button), when the shortcut key is typed, or when click() or animateClick() is called. Notably, this signal is not emitted if you call setDown(), setChecked() or toggle().

teferiincub
()

Ну поставь breakpoint на AddChain и смотри стектрейс на предмет того, откуда он вызывается оба раза.

kpanic ★★
()

frmEdit в студию

а конкретно frmEdit::frmEdit() и frmEdit::setValues()

vasist
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.