Russian Qt Forum

Qt => Общие вопросы => Тема начата: Icoz от Июль 27, 2007, 08:35



Название: [4.3.0-win] Проблема с автоподключением слотов
Отправлено: Icoz от Июль 27, 2007, 08:35
В дизайнере делаю на основе MainWindow форму с 1 менюшкой (File->Exit) и 1 кнопкой (btnExit).
Потом прописываю в классе(выделено жирным):
Код:
class qt_test : public QMainWindow
{
    Q_OBJECT

public:
    qt_test(QWidget *parent = 0);
    ~qt_test();

private:
    Ui::qt_testClass ui;
[b]private slots:
void on_btnExit_clicked()  {close();}
void on_actionExit_toggled(bool checked) {close();}[/b]
};

Запускаю. Кнопка срабатывает, а actionExit - нет! :( Что я не так сделал и что делать? Руками писать коннект? Пишу в qt_test:
Код:
qt_test::qt_test(QWidget *parent)
    : QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.actionExit,SIGNAL(toggled(bool)),this,SLOT(on_actionExit_toggled(bool)));
}

Та же ситуация - кнопка пашет, менюшка - нет!
Сами попробуйте - дело двух минут!

добавлено спустя 21 минуту:

 Так. Проблема решена. Моя ошибка. Надо вместо toggled юзать activated! :)
Чтобы юзать toggled надо установить chackable в true.

добавлено спустя 8 часов:

 Нет! Поднимаю вопрос заново. На другом компе тот же код - не работает!
on_actionExit_activated() не подключается!


Название: [4.3.0-win] Проблема с автоподключением слотов
Отправлено: pastor от Июль 27, 2007, 10:24
Используй сигнал triggered() для QAction

Код:

connect(ui.actionExit,SIGNAL(triggered()),this,SLOT(close()));


Код:

on_actionExit_triggered() {...}


Название: [4.3.0-win] Проблема с автоподключением слотов
Отправлено: Icoz от Июль 27, 2007, 10:49
Цитата: "pastor"
Используй сигнал triggered() для QAction

Код:

connect(ui.actionExit,SIGNAL(triggered()),this,SLOT(close()));


Код:

on_actionExit_triggered() {...}

Ok. Только тогда почему на одной машине activated работает, а на другой - НЕТ?

добавлено спустя 3 минуты:

 Ты будешь смеяться! Но на этой машине и ЭТО не пашет!!! :)
Вообще автоподключение слотов не работает!

добавлено спустя 3 минуты:

 Весело!
Код:
connect(ui.actionExit,SIGNAL(triggred()),this,SLOT(close()));

Тоже не срабатывает! :( Блин, да что за дела???


Название: [4.3.0-win] Проблема с автоподключением слотов
Отправлено: pastor от Июль 27, 2007, 10:54
Попробуй так организовать свой класс. имхо проблема в этом, но это тока имхо

Код:

class qt_test : public QMainWindow, private Ui::qt_testClass
{
....
};


Название: [4.3.0-win] Проблема с автоподключением слотов
Отправлено: Icoz от Июль 27, 2007, 13:19
Цитата: "pastor"
Попробуй так организовать свой класс. имхо проблема в этом, но это тока имхо

Код:

class qt_test : public QMainWindow, private Ui::qt_testClass
{
....
};

Самое смешное, это прервое, что я попробовал, заглянув в книжку по qt4
И все равно не пашет!


Название: [4.3.0-win] Проблема с автоподключением слотов
Отправлено: SABROG от Июль 27, 2007, 13:35
Дядь Вов, опечатка - triggred и triggered...

Код:

connect(ui.actionExit,SIGNAL(triggred()),this,SLOT(close()));


Название: [4.3.0-win] Проблема с автоподключением слотов
Отправлено: Icoz от Июль 27, 2007, 13:43
Код:

on_actionExit_triggered() {...}

Ну здесь-то правильно? А все равно не пашет. Про коннект ща проверить не могу. Я далеко ща от того компа. Но доберусь - попробую...


Название: [4.3.0-win] Проблема с автоподключением слотов
Отправлено: SABROG от Июль 27, 2007, 14:06
Сделай проще. В дизайнере открой Signal / Slot editor и проставь там необходимые действия, раз надо всего-лишь закрыть окно.


Название: [4.3.0-win] Проблема с автоподключением слотов
Отправлено: Icoz от Июль 27, 2007, 14:24
Цитата: "SABROG"
Сделай проще. В дизайнере открой Signal / Slot editor и проставь там необходимые действия, раз надо всего-лишь закрыть окно.

делаю в eclipse c qt-ecplise-intergator. Там нет этого редактора. (либо я его еще не нашел, что вряд ли...)


Название: [4.3.0-win] Проблема с автоподключением слотов
Отправлено: SABROG от Июль 27, 2007, 14:40
Пройди обучение в Cheat Sheet's, советую.

Цитировать

что вряд ли...

Window->Show View->Other->Qt->Qt C++ Signal Slot Editor

(Qt Eclipse Integration Release Candidat 1 (RC1))


Название: [4.3.0-win] Проблема с автоподключением слотов
Отправлено: Icoz от Июль 27, 2007, 14:43
Цитата: "SABROG"
Пройди обучение в Cheat Sheet's, советую.

Цитировать

что вряд ли...

Windows->Show View->Other->Qt->Qt C++ Signal Slot Editor

(Qt Eclipse Integration Release Candidat 1 (RC1))

О! Вот это гут! Благодарствую.
Правда меня смущает тот факт, что на одном компе этот код пашет(win2000, qt4.3.0), а на другом(xp, qt4.3.0) - нет!


Название: [4.3.0-win] Проблема с автоподключением слотов
Отправлено: bigirbis от Июль 27, 2007, 15:04
Цитировать
делаю в eclipse c qt-ecplise-intergator. Там нет этого редактора. (либо я его еще не нашел, что вряд ли...)

$(QTDIR)\bin\designer.exe
Он есть всегда...


Название: [4.3.0-win] Проблема с автоподключением слотов
Отправлено: Icoz от Июль 27, 2007, 20:48
Цитата: "bigirbis"
Цитировать
делаю в eclipse c qt-ecplise-intergator. Там нет этого редактора. (либо я его еще не нашел, что вряд ли...)

$(QTDIR)\bin\designer.exe
Он есть всегда...

ну а зачем тогда ide вообще нужно?
И почему, кстати, trolltech не доведет designer до состояния IDE?
Там осталось-то... Приделать компиляцию, отладку и все дела! Редактор встроенный там есть...

добавлено спустя 5 часов:

 
Цитата: "Icoz"
Код:

on_actionExit_triggered() {...}

Ну здесь-то правильно? А все равно не пашет. Про коннект ща проверить не могу. Я далеко ща от того компа. Но доберусь - попробую...

Все оказалось намного проще! Я забыл на том компе написать заветное слово "slots"! :)