Название: setText Отправлено: NoNameManah от Ноябрь 28, 2005, 14:37 Ребят, привет. Возникла такая проблема.
Пишу: ... QLineEdit *edit=new QLineEdit(); ... ... QObject::connect(button,SIGNAL(clicked()),edit,SLOT(setText("HI"))); ... ... Когда компилю прогу, то выдается ошибка: 'setText' undeclared (first use this function) Че за беда. Ведь этот слот есть в QLineEdit. :?: [/u] Название: setText Отправлено: Racheengel от Ноябрь 28, 2005, 16:42 QObject::connect(button,SIGNAL(clicked()),edit,SLOT(setText("HI")));
Так низя писать. Во-первых то, что в SLOT(), должно быть объявлено как слот (а не как метод). Во-вторых, очень желательно, чтобы параметры слота и сигнала совпадали :) Т.е. тебе надо сделать в проге слот типа class MyClass : public QObject { Q_ONJECT ... public slots: void onButtonClicked() ... } приконнектить его как QObject::connect(button,SIGNAL(clicked()),MyClass_object,SLOT(onButtonClicked())); а потом его имплементить: void MyClass::onButtonClicked() { setText("HI") } Название: setText Отправлено: NoNameManah от Ноябрь 29, 2005, 09:13 Так вот именно setText не может найти. Т. е. в заголовочном файле qlineedit.h есть этот слот, а компилятор говорит, что его там нет.
Название: setText Отправлено: Racheengel от Ноябрь 29, 2005, 13:40 а Кутя какая?
Название: setText Отправлено: NoNameManah от Ноябрь 29, 2005, 13:49 Третья кутя.
Название: setText Отправлено: Racheengel от Ноябрь 29, 2005, 14:09 ну а конкретно? 3.1.1 или там 3.3.5 ?
Название: setText Отправлено: NoNameManah от Ноябрь 29, 2005, 14:19 3.3.4-11
Название: setText Отправлено: Dendy от Ноябрь 29, 2005, 22:12 :D Ууууух! Когда то и я натыкался на ети вилы!
Об'ясняю. Как бы ни было похоже то, что написано внутри SIGNAL() и SLOT() на методы - ето не методы. Ето сигнатура метода. Другими словами ето информация какой именносигнал соединить с каким именно слотом, ибо последние могут быть перегруженными. Другая немаловажная особенность - безопастность кода, чтобы слот не принял int в то время как сигнал испускает QString. Короче говоря: ето информация для ПОИСКА нужного метода, а не сам метод с параметрами. Параметры в слот попадают только из сигнала. Так что советую перечить пример Racheengel'а, ибо он показывает абсолютно правильный способ решения задачи. Другой (более правильный) способ - использовать класс QSignalMapper. Специально для такого случая как у тебя он и разработан. :wink: |