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.

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


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

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

xTERM ★★ ()

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

вот что в ассистенте по этому поводу пишут, проверяй свой код может 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 ()

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

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

kpanic ★★ ()

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

frmEdit в студию

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

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