URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7431
[ Назад ]

Исходное сообщение
"Qt3 c++ linux проблема с кнопками !"

Отправлено remiznik , 20-Июн-08 20:33 
большая программа но в ней есть трудности
суть программы которую пишу ! создаю кнопки и надо чтоб при нажатии на них выскакивало диалоговое окно ColorDialog в котором выбирали нужный цвет и в последствии этот цвет становился фоновым для кнопки которая вызвала диалог ! немогу никак разобраться как отловить какая кнопка из массива кнопок вызвана !! вот пример кода !

вот массив галочек и кнопок !!! тут же и соединение с сигналом вызывавшим диалоговое окно !
[code=cpp]
for (i=0; i<8; i++)
  {
    CB[i] = new QCheckBox( this, "CB" );
    CB[i]->setGeometry( QRect( 10+i*40, 15, 40, 20 ) );
    CBB[i]=new QPushButton(" ",BoxChecker);
    CBB[i]->setFlat(true);
    CBB[i]->setGeometry(10+i*40, 35, 13, 13);
        connect(CBB[i],SIGNAL(clicked()),
                    SLOT(slotGetColor()));

   }

вот сам слот

void CheckForm::slotGetColor()
{
    QColor color=QColorDialog::getColor(blue,this);
     if(!color.isValid())
    {
    }
    else // при нажатии ОК здесь должен сменится цвет кнопки !
    {  
             if(CBB[1]->isOn())
              CBB[1]->setPaletteBackgroundColor(color);
    }              
}

трудность в том не понимаю как из масива событий поймать нажатую кнопку !


если надо могу кинуть полный исходник программы вызывавшей чекбокс с кнопками !


Содержание

Сообщения в этом обсуждении
"Qt3 c++ linux проблема с кнопками !"
Отправлено NuINu , 21-Июн-08 00:19 
>[оверквотинг удален]
>[code=cpp]
>for (i=0; i<8; i++)
>  {
>    CB[i] = new QCheckBox( this, "CB" );
>    CB[i]->setGeometry( QRect( 10+i*40, 15, 40, 20 ) );
>    CBB[i]=new QPushButton(" ",BoxChecker);
>    CBB[i]->setFlat(true);
>    CBB[i]->setGeometry(10+i*40, 35, 13, 13);
>        connect(CBB[i],SIGNAL(clicked()),
>        SLOT(slotGetColor()));

Вот это вот не правильно!!!! так соединять можно, только если СЛОТ содержиться в классе из которого производиться соединение, а судя по коду, этот слот slotGetColor у тебя находиться в форме.

в общем методика проста:
создаешь класс
наследумемый от QPushButton какой нибудь, SelfChangeColor
в нем определяешь свой слот slotGetColor.
создаешь уже кнопки этого класса. а далее уже в обработчике
пишешь:
self.setPaletteBackgroundColor(color);



"Qt3 c++ linux проблема с кнопками !"
Отправлено remiznik , 21-Июн-08 15:40 
>[оверквотинг удален]
>в классе из которого производиться соединение, а судя по коду, этот
>слот slotGetColor у тебя находиться в форме.
>
>в общем методика проста:
>создаешь класс
>наследумемый от QPushButton какой нибудь, SelfChangeColor
>в нем определяешь свой слот slotGetColor.
>создаешь уже кнопки этого класса. а далее уже в обработчике
>пишешь:
>self.setPaletteBackgroundColor(color);

у меня слот определён в форме из которой вызывается инармально вызывается проблема в том что я незнаю как опеределить какая кнопка шёлкнула из 8 !