crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Ответ на нажатие кнопки
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
AD Дата 11.4.2008, 19:54
 
Цитата(Litkevich Yuriy @ 11.4.2008, 20:10) *
хе-хе, смотри пример Калкулятор, там слот один несколько кнопок обслуживает.

Вообще супер. qobject_cast<>() - рулит. Очень удобно, практично и быстро реализовывается!!!

Спасибо! :)
Litkevich Yuriy Дата 11.4.2008, 19:10
  хе-хе, смотри пример Калкулятор, там слот один несколько кнопок обслуживает.
Litkevich Yuriy Дата 11.4.2008, 19:08
  тут у Шлее нашел еще, в его MDI, такой слот:
void MDIProgram::slotChangeWindowTitle(const QString& str)
{
    qobject_cast<DocWindow*>(sender())->setWindowTitle(str);
}

может это проще, отправителя узнать можно
AD Дата 11.4.2008, 19:04
 
Цитата(Litkevich Yuriy @ 11.4.2008, 19:54) *
глянь пример MDI, там, используется QSignalMapper, т.к. сигналы triggered() передают толко булевые значения, а впрограмме требуется узнать виджет.

Спасибо. Попробую!
Litkevich Yuriy Дата 11.4.2008, 18:54
  глянь пример MDI, там, используется QSignalMapper, т.к. сигналы triggered() передают толко булевые значения, а впрограмме требуется узнать виджет.
AD Дата 11.4.2008, 18:04
  Вопрос посложнее: есть файл, из которого считываются нужные цвета кнопок. Затем заполняется в цикле массив кнопок. Как мне узнать на какую кнопку нажали? С помощью какого сигнала или слота это определить?

Заполнение:
void QDialDistParam::setupDialog(QWidget* dialog)
{
for(int i = tab_mas[tab_index].index + 1; i<dist_vec -> size(); ++i)
        {
            string type = (*dist_vec)[i].getType().toStdString();
            if(type != "Tab")
            {
                string param_name_str = (*dist_vec)[i].getPrName().toStdString();
                QString param_name = (*dist_vec)[i].getPrName();
                if(type == "CheckBox")
                {
                    //
                }
                else if(type == "PushButton")
                {
                    param_name.insert(0, btn_inset);
                    params[param_index].btnColor = new QPushButton(dist_tabs[k]);
                    params[param_index].btnColor -> setObjectName(param_name);
                    params[param_index].btnColor -> setGeometry(btn_x, y, btn_width, btn_height);

                    QString style_sheet = "* { background-color: ";
                    style_sheet += (*dist_vec)[i].getColor();
                    style_sheet += " }";
                    params[param_index].btnColor -> setStyleSheet(style_sheet);
                    connect(params[param_index].btnColor, SIGNAL(pressed()),
                                this, SLOT(btnColorClick())); //// жирным выделен важный кусок кода, на который и следует обратить внимание
                    ++param_index;
                    param_count = param_index;
                    y += 30;
                }
            }
            else break;
        }
        distGraphics -> addTab(dist_tabs[k], QString());
}

Функция узнавания нажатой кнопки:
 
void QDialDistParam::btnColorClick()
{
    QColor color = QColorDialog::getColor();
    QString color_name = color.name();
    for(int k=0; k<param_count; ++k)
        if(btnSave -> isChecked()) /// ????????????????
        {
            QString style_sheet = "* { background-color: ";
            style_sheet += color_name;
            style_sheet += " }";
            params[k].btnColor ->setStyleSheet(style_sheet);
            break;
        }
}


вот важный элемент в коде заполнения:
connect(params[param_index].btnColor, SIGNAL(pressed()),
this, SLOT(btnColorClick()));
//// жирным выделен важный кусок кода, на который и следует обратить внимание
AD Дата 11.4.2008, 13:52
 
Цитата(ViGOur @ 11.4.2008, 14:38) *
Угу, сигналы и слоты.
Вот пример: Урок 2 - Кнопка выход

сработало, спасибо!!!! :)
ViGOur Дата 11.4.2008, 13:38
  Угу, сигналы и слоты.
Вот пример: Урок 2 - Кнопка выход
AD Дата 11.4.2008, 13:34
  Для того, чтобы поймать реакцию на нажатие кнопки надо использовать сигналы и слоты? Можно маленький примерчик.

ПыСы Простите за такие глупые вопросы, просто что-то не получается поймать реакцию на нажатие кнопки OK, Cancel, для выхода из второстепенного диалогового окна в главное приложение!
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 24.10.2021, 21:38