большая программа но в ней есть трудности
суть программы которую пишу ! создаю кнопки и надо чтоб при нажатии на них выскакивало диалоговое окно 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);
}
}
трудность в том не понимаю как из масива событий поймать нажатую кнопку !
если надо могу кинуть полный исходник программы вызывавшей чекбокс с кнопками !
>[оверквотинг удален]
>[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);
>[оверквотинг удален]
>в классе из которого производиться соединение, а судя по коду, этот
>слот slotGetColor у тебя находиться в форме.
>
>в общем методика проста:
>создаешь класс
>наследумемый от QPushButton какой нибудь, SelfChangeColor
>в нем определяешь свой слот slotGetColor.
>создаешь уже кнопки этого класса. а далее уже в обработчике
>пишешь:
>self.setPaletteBackgroundColor(color);у меня слот определён в форме из которой вызывается инармально вызывается проблема в том что я незнаю как опеределить какая кнопка шёлкнула из 8 !