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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: не работают слоты ?  (Прочитано 9073 раз)
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
Гость
« Ответ #1 : Март 20, 2006, 21:26 »

Сигнал называется destroyed()
Записан
Tirex
Гость
« Ответ #2 : Март 21, 2006, 05:10 »

изменил на destrоyed все равно реакции ноль.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #3 : Март 21, 2006, 08:21 »

попробуй еще скобки убрать
connect(this,(SIGNAL(destroy())),this,SLOT(Quit()));
на
connect(this,SIGNAL(destroy()),this,SLOT(Quit()));

и вообще смысл этой конструкции не очень понятен
зачем для QDialog надо такое делать?
Записан
Hordi
Гость
« Ответ #4 : Март 21, 2006, 10:11 »

Admin прав. Лишние скобки однозначно. Но сигнала destroy и close у QDialog нет, есть похожие слоты.
Записан
Tirex
Гость
« Ответ #5 : Март 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
Гость
« Ответ #6 : Март 21, 2006, 13:35 »

Если диалог вызывается через exec, то проверяешь результат и все.
типа:

QDialog d(...);
if(QDialog::Accepted==d.exec()){

}
Записан
Tirex
Гость
« Ответ #7 : Март 21, 2006, 13:52 »

а как установить accepted ?

так правильно будет
 в QDialog:

connect(closeButton, SIGNAL(clicked()), this, SLOT(done(1)));
Записан
Hordi
Гость
« Ответ #8 : Март 21, 2006, 14:28 »

нет, правильно так

connect(yesButton, SIGNAL(clicked()), this, SLOT(accept()));
connect(noButton, SIGNAL(clicked()), this, SLOT(reject()));

Теперь дальше:
Параметры сигнала и слота должны ОБЯЗАТЕЛЬНО совпадать. Имена переменных в них писать нельзя.
Записан
Tirex
Гость
« Ответ #9 : Март 21, 2006, 14:32 »

но я могу объявить слот accept() и дописать в нем типа присвоение перменным опредленного значения и т.д. ?
Записан
Hordi
Гость
« Ответ #10 : Март 21, 2006, 14:48 »

Да, эта функция виртуальная

добавлено спустя 58 секунд:

 Только родной QDialog::accept() вызвать не забудь
Записан
BaltikS
Гость
« Ответ #11 : Март 21, 2006, 15:00 »

Tirex, друг, а не проще тебе книгу Бланшета начать читать... Там всё написано шаг за шагом!
Записан
Tirex
Гость
« Ответ #12 : Март 22, 2006, 09:03 »

2 Hordi и Admin
cпасибо за помощь

2 BaltikS
и совет!
Записан
crocus
Гость
« Ответ #13 : Сентябрь 25, 2006, 13:09 »

Опять же чтоб не создавать новую тему:
есть список с мультиселектом и есть у него сигнал activated( const QModelIndex & index) при клике по строкам списка происходит либо селект, либо деселект так вот в Qt 4.1.4 все работало ок, а в Qt 4.2.0-tp как то криво, так вот при клике по списку кроме селект/деселект еще некая переменная получает значение
делал так
Код:

connect( uii.listRegion, SIGNAL( activated ( QModelIndex ) ),
this, SLOT( listRegion_activated ( QModelIndex ) ) );

и не работает- хотя должно, а вот так работает
Код:

connect( uii.listStreet->selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ),
this, SLOT( on_listStreet_activated () ) );

но как сказал выше криво т.е. при первом клике элемент выделяется а дальше нефига-деселект не работает.
Какие предположения???
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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