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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QComboBox и activated()[РЕШЕНО]  (Прочитано 8000 раз)
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);
}
« Последнее редактирование: Октябрь 06, 2010, 11:55 от hanabad » Записан
crossly
Гость
« Ответ #1 : Октябрь 05, 2010, 09:03 »

у QComboBox нету сигнала activated() ... есть
Код:
void QComboBox::activated ( const QString & text )   [signal]
void QComboBox::activated ( int index )   [signal]
Записан
hanabad
Гость
« Ответ #2 : Октябрь 05, 2010, 09:44 »

Все равно не въезжаю только что попробывал так:
int ind=1;
connect(cmbv,SIGNAL(activated(ind)),SLOT(slotMessage()));
Все равно не работает.
Записан
merke
Гость
« Ответ #3 : Октябрь 05, 2010, 09:55 »

не надо ни какой ind пихать в сигнал!

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

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

Записан
hanabad
Гость
« Ответ #4 : Октябрь 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);
}
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #5 : Октябрь 05, 2010, 10:09 »

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

Имя переменной не указывается и можно проигнорировать параметр сигнала вообще:
connect(cmbv, SIGNAL(activated(int)), SLOT(slotMessage()));
« Последнее редактирование: Октябрь 05, 2010, 10:12 от navrocky » Записан

Гугль в помощь
hanabad
Гость
« Ответ #6 : Октябрь 05, 2010, 10:17 »

аааааа зарррработало!
crossly
Александр
navrocky
Огромное вам спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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