Название: сигналы и слоты. Отправлено: anater от Декабрь 28, 2009, 17:54 Имеется код:
Код: QTabWidget *qtw = new QTabWidget; так вот при запуске пишет: Object::connect: No such slot QTextEdit::append("TEST") in qarm.cpp:51 Хотя в доке такой слот у QTextEdit есть.... Хелп плиз! ??? Название: Re: сигналы и слоты. Отправлено: niXman от Декабрь 28, 2009, 18:11 connect(qb, SIGNAL(clicked()),qte,SLOT(append(QString)));
Название: Re: сигналы и слоты. Отправлено: Rcus от Декабрь 28, 2009, 18:14 Нет такого слота, есть append(const QString&) /* или append(QString) в нормализованном виде*/. А то что вам нужно решается при помощи QSignalMapper в простых случаях и ручных слотов в более сложных.
вариант Цитировать connect(qb, SIGNAL(clicked()),qte,SLOT(append(QString))); не заработаетНазвание: Re: сигналы и слоты. Отправлено: Igors от Декабрь 28, 2009, 18:14 Нет слота QTextEdit::append("TEST")
Есть слот QTextEdit::append(const QString &) При коннекте нельзя использовать имена параметров и тем более константы. Можно только типы Название: Re: сигналы и слоты. Отправлено: Alex Custov от Декабрь 28, 2009, 18:37 Имеется код: ... Хелп плиз! ??? Документацию на connect() ты не прочитал принципиально? Цитировать Note that the signal and slots parameters must not contain any variable names, only the type. E.g. the following would not work and return false: // WRONG QObject::connect(scrollBar, SIGNAL(valueChanged(int value)), label, SLOT(setNum(int value))); Название: Re: сигналы и слоты. Отправлено: niXman от Декабрь 28, 2009, 19:22 Цитировать не заработает дык...почему? Название: Re: сигналы и слоты. Отправлено: anater от Декабрь 28, 2009, 19:30 Имеется код: ... Хелп плиз! ??? Документацию на connect() ты не прочитал принципиально? Цитировать Note that the signal and slots parameters must not contain any variable names, only the type. E.g. the following would not work and return false: // WRONG QObject::connect(scrollBar, SIGNAL(valueChanged(int value)), label, SLOT(setNum(int value))); Хорошо слия я сигнал в свой слот как тут подсказывали выше. QTextEdit *qte = new QTextEdit; qtw->addTab(qte,"TEST"); int qarm::usslot2(int param) { qDebug() << "Test slot2 " << param; return 0; }; А как мне из слота теперь получить доступ к "QTextEdit *qte = new QTextEdit;" ??? qte->append и пр. здесь не сработают :( Название: Re: сигналы и слоты. Отправлено: niXman от Декабрь 28, 2009, 19:32 тебе же ответили:
Цитировать Документацию на connect() ты не прочитал принципиально? что не так?Название: Re: сигналы и слоты. Отправлено: anater от Декабрь 28, 2009, 19:50 тебе же ответили: Все гут. Вот только появился вопрос как из слота достучаться на внешний объект?Цитировать Документацию на connect() ты не прочитал принципиально? что не так?Название: Re: сигналы и слоты. Отправлено: Alex Custov от Декабрь 28, 2009, 19:50 А как мне из слота теперь получить доступ к "QTextEdit *qte = new QTextEdit;" ??? qte->append и пр. здесь не сработают :( Это уже проблема дизайна, а не слотов. Чтобы в любом методе своего виджета получать доступ к любым своим переменным, надо эти переменные вынести в атрибуты класса. Код
Название: Re: сигналы и слоты. Отправлено: anater от Декабрь 28, 2009, 20:01 А как мне из слота теперь получить доступ к "QTextEdit *qte = new QTextEdit;" ??? qte->append и пр. здесь не сработают :( Это уже проблема дизайна, а не слотов. Чтобы в любом методе своего виджета получать доступ к любым своим переменным, надо эти переменные вынести в атрибуты класса. Код
Согласен нормальный вариант если бы не одно но... Все объекты у мене формируются динамически на основе вычитанного XML файла. Т.е. объектов может быть 1 а может 11. Понятно что правильнее было бы и создавать их динамически.... Есть еще хорошие идеи? Может использовать заранее объявление контейнера? Название: Re: сигналы и слоты. Отправлено: anater от Декабрь 28, 2009, 21:10 В связи с динамичностью приложения использовал заранее объявленый безразмерный QList как вариант. Все заработало. Всем спасибо!
|