Делаю маленькую програмульку, из одного файла ради ликбеза, неохота делать отдельный класс, как поюзать сигнал, что нажата кнопка btnPath, например чтобы вызвать функцию myfunk.
Например такой код:
void myfunk (void)
{
...
}
//-----------------
int main(int argc, char *argv[])
{
QPushButton *btnPath = new QPushButton("Open");
QVBoxLayout *layout = new QVBoxLayout;
....
layout->addWidget(btnPath);
wgt.setLayout(layout);
wgt.show();
}
Думаю, что это нельзя сделать, так как вроде должен быть объект отправитель и объект приемщик.
Которые к тому же связаны все с разруливанием в многопоточных приложениях.
Но можно это обойти, сделав некий 'переходник', примерно так:
class CTmp: QObject
{
Q_OBJECT
public:
CTmp(QWidget *parent = 0);
public slots:
void tmpSlot();
};
void myfunk (void)
{
QMessageBox::warning( 0, "123", "123");
}
CTmp::CTmp( QWidget *parent):QObject( parent)
{
}
void CTmp::tmpSlot()
{
myfunk();
}
int main(int argc, char *argv[])
{
QPushButton *btnPath = new QPushButton("Open");
QVBoxLayout *layout = new QVBoxLayout;
....
CTmp tmp;
QObject::connect( btnPath, SIGNAL(clicked()), (const QObject *)&tmp, SLOT( tmpSlot()));
layout->addWidget(btnPath);
wgt.setLayout(layout);
wgt.show();
}
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)