Каталог статей

Главная » Статьи » Мои статьи

QSignalMapper - как пользоваться
Допустим у нас приложение "Калькулятор". Имеется 9 кнопок с цифрами дабы не связывать каждое нажатие отдельной кнопочки с одним и тем же слотом обрабатывающим вывод цифры на табло и не плодить код, есть прекрасный класс в Qt  - QSignalMapper

Простой пример:

В заголовочном файле декларируем:

  QSignalMapper *signalMapper;

И тут же создаем приватный слот:

  void clicked(const QString & text);

Который будет выводить сообщение с текстом нажатой кнопочки

Далее в конструкторе класса создаем объект класса QSignalMapper

  signalMapper = new QSignalMapper(this);

Далее добавляем в QGridLayout yнаши 9 кнопочек:

 for (int i = 0; i < 9; ++i)
    {
        //Кнопочка с текстом текущей итерации цикла
        QPushButton *button = new QPushButton(QString::number(i));
        //При нажатии на данную кнопочку вызывам слот класса QSignalMapper
        connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
       //Привязывем кнопочку к маперу с текстом текущей итерации
        signalMapper->setMapping(button, QString::number(i));
       //ну и добавляем кнопочку в Layout
        ui->gridLayout->addWidget(button, i / 3, i % 3);
    }
    //Теперь когда маппер испуска сигнал о нажатии определенной кнопочки вызывается наш слот
   //и в него передается значение привязанное в мапер для данной кнопочки
    connect(signalMapper, SIGNAL(mapped(const QString &)),
                this, SLOT(clicked(const QString &)));


//А вот и сам наш слот

void MainWindow::clicked(const QString & text)
{
    QMessageBox::information(this, "TEST", text, QMessageBox::Ok);
}

Категория: Мои статьи | Добавил: qt-boy (23.12.2010) | Автор: Александр
Просмотров: 11039 | Комментарии: 1 | Теги: QSignalMapper - как пользоваться | Рейтинг: 4.0/2 |
Всего комментариев: 1
1 Tantflela  
0
почерпнул много нового

Имя *:
Email *:
Код *:
Форма входа
3D Облако
Мини-чат
Категории раздела
Мои статьи [19]
Облако
Qtractor 0.4.2 QList QListView Сравнение MFC и Qt git-репозиторий Qt Жасмин Бланшет QFileDialog QtCreator 1.1 Qt Solutions Qt Extended Динамическое приведение QObject Пишем собственный веб броузер Установка иконки приложения на плат QMessageBox Добавление информации о версии в .e Вышли бета-версии библиотеки Qt 4.7 Сохранение отзывчивости графическог Указание кодировки строк в исходном qt sdk qt quick QInputDialog Singleton для Qt Стандартные алгоритмы для работы с QColorDialog QFontDialog Анимация в QLabel gif Открытие ссылки в браузере установл Добавление итемов в QTableWidget QMap итератор Помещаем окно посередине экрана Выставляем флаги для окон Отловить нажатие клавиши на QLabel Определить какой именно контрол был Показать на время курсор с песочным Зашифровать данные в MD5 или MD4 Удаление из QlistWidget строки Написание DLL на С++ Диалог открытия файла работа с реестром Ограничение на ввод определенного к QMessageBox подтверждение удаления Многопоточный сервер на примере Чат Отправляем файл на PHP скрипт Пример пересылки от клиента к серве Алгоритм сортировки (не очень оптим но если не важна скорость то сойдет Вставка текста из буфера обмена(при Удаление повторяющихся элементов в Проверить существует ли файл Распечатка текста из QTextEdit Вывести текст из QTextEdit в диалог Интересное о QFileInfo Отловить событие закрытие окна Устанавливаем иконку для окна Проверка веб ссылки на валидность Функция проверки обновления для про Иконка для QPushButton Преобразовать QString в char* Выдрать IP и порт из строки Окно поверх всех Ввод пароля в QLineEdit Ввод в QLineEdit только цифр и точк Сортировка QListWidget Скачать файл по Ftp Пример использования оператора fore Пример использования класса QDir Получить список папок Кодирование/Декодирвоание Base64 Получить переменные среды Запуск сторонней программы из Qt ис Экран заставка SplashScreen Добавление эффекта выделяющего прям Получение информации о свободном пр Запись структуры(пользовательского Функция Sleep Получение информации о свободном ди Простой пример использования QProce Отрисовать виджет по форме картинки Перемещение виджета вслед за мышкой Сделать диалог поверх всех окон/поз Повернуть изображение Установка кодеков(русский текст) дл QSignalMapper - как пользоваться QFileSystemWatcher следим за директ Добавление сигнала clicked() в QLab Удаление директории с поддиректория Рекурсивный поиск файлов и папок QWheelEvent определить направление Отловить завершение работы системы Валидация на ввод только цифр Центрирование виджета посередине ро styleSheet QLabel красим текст под styleSheet QLabel простой пример styleSheet QTableWidget красим заго styleSheet QTableWidget красим QTab Проверка сокета Выход из вложенных циклов styleSheet QPushButton выравнивание Сортировка QTableWidget по дате
Наш опрос
Оцените мой сайт
Всего ответов: 93
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0