Russian Qt Forum
Октябрь 01, 2024, 12:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: 10 сигналов и 1 слот  (Прочитано 4110 раз)
reD_Rus
Гость
« : Ноябрь 23, 2009, 13:22 »

Хочу написать калькулятор (для тренировки) на qt 4.5.2 в Qt Creator 1.2.1
Накидал кнопок b1,b2и т. д. В слоте каждой кнопки читаю её поле text() и отдаю строкой переменной qsDigits потом вывожу на lcdNumber
есть ли способ сделать один слот на все 10 кнопок, и в нем читать поле text() кликнутой кнопки?

Вот так я делаю сейчас:

Код:
void Calc::on_b1_clicked()
{
if (qsDigits->length() <= 10) {
qsDigits->append(ui->b1->text());
ui->lcdNumber->display(*qsDigits);
}
}
void Calc::on_b2_clicked()
{
if (qsDigits->length() <= 10) {
qsDigits->append(ui->b2->text());
ui->lcdNumber->display(*qsDigits);
}
}
Записан
Zmeishe
Гость
« Ответ #1 : Ноябрь 23, 2009, 13:24 »

сделай.
В чём проблема то?

Функция sender() вернёт указатель типа QObject на нажатую кнопку.
Приводи его к типу твоих кнопок и юзай как хошь.
« Последнее редактирование: Ноябрь 23, 2009, 13:26 от Zmeishe » Записан
reD_Rus
Гость
« Ответ #2 : Ноябрь 23, 2009, 13:25 »

а как читать? это поле
если нетрудно пример
Записан
Zmeishe
Гость
« Ответ #3 : Ноябрь 23, 2009, 13:29 »

QPushButton *btn = qobject_cast<QPushButton*>( sender() );
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Ноябрь 23, 2009, 13:33 »

см \examples\widgets\calculator\calculator.cpp
Код:
void Calculator::digitClicked()
{
    Button *clickedButton = qobject_cast<Button *>(sender());
    int digitValue = clickedButton->text().toInt();
    if (display->text() == "0" && digitValue == 0.0)
        return;

    if (waitingForOperand) {
        display->clear();
waitingForOperand = false;
    }
    display->setText(display->text() + QString::number(digitValue));
}
« Последнее редактирование: Ноябрь 23, 2009, 13:37 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
reD_Rus
Гость
« Ответ #5 : Ноябрь 23, 2009, 13:34 »

Спасибо! все получилось
Записан
SASA
Гость
« Ответ #6 : Ноябрь 23, 2009, 13:35 »

QSignalMapper +
http://qt.osdn.org.ua/signalmapper.html
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.149 секунд. Запросов: 23.