Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: hanabad от Октябрь 05, 2010, 08:33



Название: QComboBox и activated()[РЕШЕНО]
Отправлено: hanabad от Октябрь 05, 2010, 08:33
Народ помогите пожалуйста!
Чет никак не пойму почему у меня QComboBox
не высылает сигнал.
принцип моего мышления можно понять из этого кода:
Код:
#ifndef _myClass_h_
#define _myClass_h_

#include <QtGui>
class QComboBox;

class myClass : public QWidget {
    Q_OBJECT
public:
    myClass(QWidget* pwgt = 0);
    QComboBox* cmbv;
public slots:
void slotMessage();
};
#endif
Код:
#include <QtGui>
#include "myClass.h"

myClass::myClass(QWidget* pwgt) : QWidget(pwgt)
{
cmbv = new QComboBox();
QStringList lstv;
lstv << "Item1" << "Item2" << "Item3" << "Item4";
cmbv->addItems(lstv);
QGridLayout* grlv = new QGridLayout();
           grlv->addWidget(cmbv,0,1);
           setLayout(grlv);
connect(cmbv,SIGNAL(activated()),SLOT(slotMessage()));
}
void myClass::slotMessage()
{
 int i = QMessageBox::warning(0,"OK","OK",QMessageBox::Ok);
}


Название: Re: QComboBox и activated()
Отправлено: crossly от Октябрь 05, 2010, 09:03
у QComboBox нету сигнала activated() ... есть
Код:
void QComboBox::activated ( const QString & text )   [signal]
void QComboBox::activated ( int index )   [signal]


Название: Re: QComboBox и activated()
Отправлено: hanabad от Октябрь 05, 2010, 09:44
Все равно не въезжаю только что попробывал так:
int ind=1;
connect(cmbv,SIGNAL(activated(ind)),SLOT(slotMessage()));
Все равно не работает.


Название: Re: QComboBox и activated()
Отправлено: merke от Октябрь 05, 2010, 09:55
не надо ни какой ind пихать в сигнал!

connect(cmbv,SIGNAL(activated(int index)),SLOT(slotMessage(int index)));

Т.е. когда испускается сигнал он уже несет в себе параметр индекс!



Название: Re: QComboBox и activated()
Отправлено: hanabad от Октябрь 05, 2010, 10:08
Один фиг не работает!
   connect(cmbv,SIGNAL(activated(int index)),SLOT(slotMessage(int index)));

void myClass::slotMessage(int index)
{
index = QMessageBox::warning(0,"OK","OK",QMessageBox::Ok);
}


Название: Re: QComboBox и activated()
Отправлено: navrocky от Октябрь 05, 2010, 10:09
connect(cmbv,SIGNAL(activated(int index)),SLOT(slotMessage(int index)));

Имя переменной не указывается и можно проигнорировать параметр сигнала вообще:
connect(cmbv, SIGNAL(activated(int)), SLOT(slotMessage()));


Название: Re: QComboBox и activated()
Отправлено: hanabad от Октябрь 05, 2010, 10:17
аааааа зарррработало!
crossly
Александр
navrocky
Огромное вам спасибо!