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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как из своей функции вызвать функцию определенную в классе?  (Прочитано 3831 раз)
jury
Гость
« : Октябрь 11, 2016, 14:17 »

Как из своей функции вызвать функцию определенную в классе?

#include "exx.h"
#include "ui_exx.h"

#include "my_exx.h"     // Мои прототипы функций

Exx::Exx(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Exx)
{
    ui->setupUi(this);
}

Exx::~Exx()
{
    delete ui;
}

// Обработчик сообщения SIGUSR1
void My_Hndlr_Msg(int signo, siginfo_t *si, void *ucontext)
{
    if(signo == SIGUSR1)  My_Obrab(); // Функция обработки
}

// Функция: - My_Obrab(void)
void Exx::My_Obrab(void)
{
    ui->My_pushBtn->setStyleSheet(QString("background-color: red"));
}


ошибка: 'My_Obrab' was not declared in this scope
     if(signo == SIGUSR1)  My_Obrab(); // Функция обработки
                                    ^
« Последнее редактирование: Октябрь 11, 2016, 14:58 от jury » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Октябрь 11, 2016, 15:42 »

Пожалуйста, пользуйтесь тэгами оформления кода.

My_Obrab у вас является методом класса, который без наличия экземпляра класса вызываться не может.
Записан
jury
Гость
« Ответ #2 : Октябрь 11, 2016, 16:50 »

Извините за неправильно оформленный код, никогда не пользовался тегами.
В C++Builder Windows аналогичный вызов функции имел вид:
 имя_объекта_формы->My_Obrab();
Как в Qt это сделать?
Записан
ssoft
Программист
*****
Offline Offline

Сообщений: 584


Просмотр профиля
« Ответ #3 : Октябрь 11, 2016, 17:17 »

В C++Builder Windows аналогичный вызов функции имел вид:
 имя_объекта_формы->My_Obrab();
Как в Qt это сделать?

Точно так же. Определите переменную <имя_объекта_формы>. Где она инициализирована?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Октябрь 14, 2016, 13:55 »

Дело в том, что в Билдере по дурацки (с точки сзрения ООП и С++) было сделано, объект у них создавался автоматом в заголовочнике, отсюда у людей непонимание как использовать С++.

Топикстартеру:
нужно создать объект там, где он нужен и затем его использовать.

Откройте любой пример Qt и посмотрите как используются самописанные классы.
Очень рекомендую старое (выпиленное в новых версиях) учебное пособие: http://www.doc.crossplatform.ru/qt/4.4.3/tutorials-tutorial.html
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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