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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: setText  (Прочитано 6557 раз)
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]
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Ноябрь 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")
}
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
NoNameManah
Гость
« Ответ #2 : Ноябрь 29, 2005, 09:13 »

Так вот именно setText не может найти. Т. е. в заголовочном файле qlineedit.h есть этот слот, а компилятор говорит, что его там нет.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Ноябрь 29, 2005, 13:40 »

а Кутя какая?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
NoNameManah
Гость
« Ответ #4 : Ноябрь 29, 2005, 13:49 »

Третья кутя.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #5 : Ноябрь 29, 2005, 14:09 »

ну а конкретно? 3.1.1 или там 3.3.5 ?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
NoNameManah
Гость
« Ответ #6 : Ноябрь 29, 2005, 14:19 »

3.3.4-11
Записан
Dendy
Гость
« Ответ #7 : Ноябрь 29, 2005, 22:12 »

Веселый  Ууууух! Когда то и я натыкался на ети вилы!
Об'ясняю.

Как бы ни было похоже то, что написано внутри SIGNAL() и SLOT() на методы - ето не методы. Ето сигнатура метода. Другими словами ето информация какой именносигнал соединить с каким именно слотом, ибо последние могут быть перегруженными. Другая немаловажная особенность - безопастность кода, чтобы слот не принял int в то время как сигнал испускает QString. Короче говоря: ето информация для ПОИСКА нужного метода, а не сам метод с параметрами. Параметры в слот попадают только из сигнала. Так что советую перечить пример Racheengel'а, ибо он показывает абсолютно правильный способ решения задачи.

Другой (более правильный) способ - использовать класс QSignalMapper. Специально для такого случая как у тебя он и разработан.

 :wink:
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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