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

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: По кнопке выполнить функцию  (Прочитано 17112 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« : Декабрь 22, 2011, 03:16 »

Привет всем. Я начинающий изучать Qt на VS 2008. Меня крайне срочно заинтересовал вопрос, как мне имея несколько спинов, кнопку и текстэдит по нажатии на кнопку считать спины в пременные, выполнить функцию, зависящую от этих переменных и вывести результат в текстэдит? Заранее благодарен.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Декабрь 22, 2011, 03:32 »

для начала надо бы почитать документацию о механизме сигналов-слотов и посмотреть какие есть методы у спинов и текстэдита, можно еще примеры какие-то посмотреть. после этого все должно стать ясно.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Декабрь 22, 2011, 07:21 »

ды знаю я о connect на clicked()
мне не понятно, как взять значения и записать в переменные для начала...
Записан
iroln
Гость
« Ответ #3 : Декабрь 22, 2011, 08:01 »

У QSpinBox есть методы value/setValue, через них и получаешь/устанавливаешь значение. Документация рулит. Улыбающийся
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #4 : Декабрь 22, 2011, 11:46 »

да. эти свойства я видел.
Просто я привык в дэлфи, что на нажатие кнопки существует обычная функция. Так вот, я и хотел бы создать и связать эту функцию с кнопкой.
извиняюсь за свой маразм, но я действительно не могу найти, как это сделать. Документация на сайте и в асистанте не помогает мне. наверное путаюсь. есть ли у кого пример похожий?Может кто поделится?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Декабрь 22, 2011, 13:44 »

слот, который ты соединяешь с сигналом clicked(), и есть эта "обычная функция", за исключением того, что это просто метод класса.
ды знаю я о connect на clicked()
я и хотел бы создать и связать эту функцию с кнопкой.
противоречишь сам себе
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
KrupaKarlo
Гость
« Ответ #6 : Декабрь 22, 2011, 13:53 »

Допустим есть  spin1 и spin2 кнопка btn и textedit
считаем функцию что spin1*spin2 - 2.3

Код:
connect(btn, SIGNAL(clicked()), this, SLOT(slot_lolo()) );


double Класс::result()
{
     return spin1->value()*spin2->value() - 2.3;
}

void Класс::slot_lolo()
{
    textedit->setText(QString::number(result()));
}



примерно так, но писал от балды не проверяя могут быть косяки. Если ты не Киркоров остальное додумаешь

Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #7 : Декабрь 22, 2011, 19:58 »

о. да, что-то похожее я видел. но я не понял, что есть this.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #8 : Декабрь 22, 2011, 20:23 »

значит для начала надо почитать о классах в С++
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
KrupaKarlo
Гость
« Ответ #9 : Декабрь 23, 2011, 07:55 »

this на пальцах это ссылка на самого себя. т.е. тут говорится, что обрабатывать нажатие кнопки будет функция класса в котором ты код и пишешь)
Записан
lighting
Гость
« Ответ #10 : Декабрь 23, 2011, 10:11 »

но я не понял, что есть this.
то же что self в delphi
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #11 : Декабрь 23, 2011, 13:11 »

Ребят, ввожу
Код:
connect (ThermodynamicRunButton, SIGNAL(clicked()), this, SLOT(my_function());
где
Код:
double a;

void my_function()
{
a=0;
}
выдаёт
error C2673: 'main' : global functions do not have 'this' pointers
Записан
joker
Новичок

Offline Offline

Сообщений: 49


Просмотр профиля
« Ответ #12 : Декабрь 23, 2011, 13:34 »

1. RTFM C++
2. RTFM Qt
....................
n. Быстрый вариант для студента - делать форму в дизайнере QtCreator-a  - ПКМ по кнопке на форме, "Перейти к слоту", clicked().
При этом доступ к другим элементам формы как ui->

Записан
KrupaKarlo
Гость
« Ответ #13 : Декабрь 23, 2011, 14:30 »

Даже по ошибке понятно что ты делаешь не так.  Полное незнание ни Qt ни даже основ С++...
Записан
iroln
Гость
« Ответ #14 : Декабрь 23, 2011, 15:52 »

Да чел сам в шоке, какие-то классы, функции, С++, что это вообще фиг поймёшь. О том, что про всё это можно прочитать в книжке, наверное, даже мысль такая не приходила в голову? Улыбающийся

Как-то всё это печально.
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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