crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 9.7.2025, 20:27