Название: не работают слоты ? Отправлено: Tirex от Март 20, 2006, 20:21 не работают почему - то слоты :
в конструкторе когда делаю так a = new QAction(QIcon(":/images/configure.png"), tr("&options"), this); a->setShortcut(Qt::CTRL + Qt::Key_O); connect(a, SIGNAL(triggered()), this, SLOT(Quit())); tb->addAction(a); -- работает -- а так не реагирует: connect(this,(SIGNAL(destroy())),this,SLOT(Quit())); connect(dialog,SIGNAL(close()),this,SLOT(newGame())); class ConfigDialog : public QDialog { Q_OBJECT ..... } в чем причина ? Название: не работают слоты ? Отправлено: Hordi от Март 20, 2006, 21:26 Сигнал называется destroyed()
Название: не работают слоты ? Отправлено: Tirex от Март 21, 2006, 05:10 изменил на destrоyed все равно реакции ноль.
Название: не работают слоты ? Отправлено: Admin от Март 21, 2006, 08:21 попробуй еще скобки убрать
connect(this,(SIGNAL(destroy())),this,SLOT(Quit())); на connect(this,SIGNAL(destroy()),this,SLOT(Quit())); и вообще смысл этой конструкции не очень понятен зачем для QDialog надо такое делать? Название: не работают слоты ? Отправлено: Hordi от Март 21, 2006, 10:11 Admin прав. Лишние скобки однозначно. Но сигнала destroy и close у QDialog нет, есть похожие слоты.
Название: не работают слоты ? Отправлено: Tirex от Март 21, 2006, 13:29 Цитировать и вообще смысл этой конструкции не очень понятен зачем для QDialog надо такое делать? хочу сделать так: connect(dialog,SIGNAL(close()),this,SLOT(dialogQuit( ))); чтобы при выходе записать все настройки высталвенные в QDIalog Цитировать Но сигнала destroy и close у QDialog нет, есть похожие слоты. кажись понял свою ошибку, наверное надо вызывать что-то из этого: void accepted () void finished ( int result ) void rejected () Название: не работают слоты ? Отправлено: Hordi от Март 21, 2006, 13:35 Если диалог вызывается через exec, то проверяешь результат и все.
типа: QDialog d(...); if(QDialog::Accepted==d.exec()){ } Название: не работают слоты ? Отправлено: Tirex от Март 21, 2006, 13:52 а как установить accepted ?
так правильно будет в QDialog: connect(closeButton, SIGNAL(clicked()), this, SLOT(done(1))); Название: не работают слоты ? Отправлено: Hordi от Март 21, 2006, 14:28 нет, правильно так
connect(yesButton, SIGNAL(clicked()), this, SLOT(accept())); connect(noButton, SIGNAL(clicked()), this, SLOT(reject())); Теперь дальше: Параметры сигнала и слота должны ОБЯЗАТЕЛЬНО совпадать. Имена переменных в них писать нельзя. Название: не работают слоты ? Отправлено: Tirex от Март 21, 2006, 14:32 но я могу объявить слот accept() и дописать в нем типа присвоение перменным опредленного значения и т.д. ?
Название: не работают слоты ? Отправлено: Hordi от Март 21, 2006, 14:48 Да, эта функция виртуальная
добавлено спустя 58 секунд: Только родной QDialog::accept() вызвать не забудь Название: не работают слоты ? Отправлено: BaltikS от Март 21, 2006, 15:00 Tirex, друг, а не проще тебе книгу Бланшета начать читать... Там всё написано шаг за шагом!
Название: не работают слоты ? Отправлено: Tirex от Март 22, 2006, 09:03 2 Hordi и Admin
cпасибо за помощь 2 BaltikS и совет! Название: не работают слоты ? Отправлено: crocus от Сентябрь 25, 2006, 13:09 Опять же чтоб не создавать новую тему:
есть список с мультиселектом и есть у него сигнал activated( const QModelIndex & index) при клике по строкам списка происходит либо селект, либо деселект так вот в Qt 4.1.4 все работало ок, а в Qt 4.2.0-tp как то криво, так вот при клике по списку кроме селект/деселект еще некая переменная получает значение делал так Код:
и не работает- хотя должно, а вот так работает Код:
но как сказал выше криво т.е. при первом клике элемент выделяется а дальше нефига-деселект не работает. Какие предположения??? |