Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Alp от Сентябрь 08, 2010, 18:45



Название: connectSlotsByName
Отправлено: Alp от Сентябрь 08, 2010, 18:45
Есть виджет нарисованный в дизайнере и на него вдобаво ко всему кладется еще один виджет ,но уже кодом.
Хочется поменьше телодвижений и единообразия привязки сигнал-слотов, потому реализую слот
Код
C++ (Qt)
on_caption_edited(QString)
в виджете есть сигнал
Код
C++ (Qt)
edited(QString)
При вызове в конструкторе QMetaObject::connectSlotsByName(this) получаю:
Код
C++ (Qt)
QMetaObject::connectSlotsByName: No matching signal for on_caption_edited(QString)

Код
C++ (Qt)
namespace Ui { class GroupForm; }
 
class     QEditLabel;
 
class QGroup : public QFrame
{
   Q_OBJECT
 
   QEditLabel*     caption;    //Has signal edited(QString)
 
   Ui::GroupForm*  ui;
   void on_caption_edited(QString) { do the blah! }
};
 
QGroup::QGroup(QWidget *parent) :
   QFrame(parent),
   ui(new Ui::GroupForm)
{
   ui->setupUi(this);
 
   QMetaObject::connectSlotsByName(this);   //Oops! No matching signal!
}
 


Название: Re: connectSlotsByName
Отправлено: Alp от Сентябрь 08, 2010, 18:47
Да, нарисовать этот сабвиджет в дизайнере же и запромоутить его не могу - нарисованный виджет должен иметь базовый лайаут внутри себя, а мой виджет не должен принадлежать этом лайауту. Т.е. как бы лежать над ним (или под ним), позиционирую я его сам.


Название: Re: connectSlotsByName
Отправлено: lit-uriy от Сентябрь 08, 2010, 23:37
нужно чтобы "caption" было именем объекта. Т.к. метаобъектная система - система времени выполнения.