|
0 / 0 / 0
Регистрация: 05.08.2008
Сообщений: 7
|
|
Проблема с видимостью объекта класса из функции05.08.2008, 11:30. Показов 4757. Ответов 11
Метки нет (Все метки)
Здравстуйте! Работаю со связкой QT+KDevelop. В функции main создается и отображается объект-основная форма. Программа работает с CAN-сетью. Далее стоит функция которая при получении сообщения из сети вызывает функцию-обработчик. Функция обработчик не является методом класса моей формы и не видит объект-форму. Вопрос:как из функции-обработчика добраться до формы и её компонентов?
0
|
|
| 05.08.2008, 11:30 | |
|
Ответы с готовыми решениями:
11
Возможно ли создание объекта шаблонного класса в функции этого класса?
Проблема с созданием объекта динамического массива Класса |
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 05.08.2008, 14:28 | |
|
Может, friend?
0
|
|
|
40 / 40 / 10
Регистрация: 27.06.2008
Сообщений: 118
|
||
| 05.08.2008, 16:19 | ||
|
А ты напиши свою функцию-обработчик как метод твоего класса, или так тебе не катит?!
Добавлено через 3 минуты
0
|
||
|
0 / 0 / 0
Регистрация: 05.08.2008
Сообщений: 7
|
||||||||||||||||||
| 05.08.2008, 18:08 [ТС] | ||||||||||||||||||
Регистрирует обработчик события. Параметры: chan - номер канала ev - события, возможные значения определены в заголовочном файле chai.h: CIEV_RC - получен CAN-кадр из сети ci_handler - обработчик события, имеет следующий прототип: void ci_handler(_s16 ev) Подставить свой метод из класса не получается из-за прототипа. Вот прототип:
![]()
![]() С friend пробывал, методы видно итак, а объект не видно.
0
|
||||||||||||||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 05.08.2008, 18:47 | |
|
Переменной объекта не видно? Или к чему ты доступ хочешь получить? К свойствам объекта? Что тебе от объекта нужно? Когда делаешь с friend у тебя видны все внутренние структуры объекта, что-то еще требуется?
Если переменной не видно, то поменяй область видимости у перменной-объекта формы.
0
|
|
|
0 / 0 / 0
Регистрация: 05.08.2008
Сообщений: 7
|
||||||
| 05.08.2008, 19:02 [ТС] | ||||||
А frmMainImpl wndMain; можно только внутри main,там еще куча всего. Как еще можно поменять область видимости?
0
|
||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 05.08.2008, 19:07 | |
|
Ну еще бы! Переменная формы у тебя видна только в main. Твоя функция вне main, поэтому она ничего не видит. Или вынеси переменную за границы main, или static попробуй. Тогда она будет видна во всем файле.
0
|
|
|
0 / 0 / 0
Регистрация: 05.08.2008
Сообщений: 7
|
|
| 05.08.2008, 19:12 [ТС] | |
|
За пределы вынести не могу-ругается KDevelop,static-пробовал не помогает.
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 05.08.2008, 19:20 | |
|
Заткни эту тупую неповоротливую кривую среду
нафих. Запускай g++ напрямую и компиль. Ты всегда собираешься идти на поводу у среды? Синтаксически ты спокойно можешь вынести за пределы функции. Я с тупостью KDevelop бороться не собираюсь. На что, хоть, ругается-то?Через friend ты доберешься до любого текстбокса, до любого свойства в классе. В чем проблема-то? P. S. Да, со static я перегнул. Он же сохраняет между вызовами... Выноси за пределы и исправляй то, на что эта среда жалуется. Будет тебе видна твоя переменная.
1
|
|
|
0 / 0 / 0
Регистрация: 05.08.2008
Сообщений: 7
|
|
| 06.08.2008, 11:28 [ТС] | |
|
KDevelop ругается так:QPaintDevice: Must construct QApplication before a QPaintDevice
А можно про friend хоть пару строчек кода, а то я что-то не пойму? И объект дружественной функцие передавать все равно придется?
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|||||||||||
| 06.08.2008, 15:24 | |||||||||||
|
А почему бы тогда не сдалат совсем просто?
Использовать указатель. Вне main объявляем указатель на нашу форму. А в main собственно уже создаем ее.Выглядеть все это будет примерно так:
Добавлено через 6 минут К слову, возвращаясь назад, не вижу причины не установить в качестве обрабочика метод класса, как верно было подемечено Turbosega. Вот пример простенький:
![]() Добавлено через 41 минуту Можно еще создать функцию-wrapper для хэндлера. То есть, оболочку, которая будет хэндлером, и будет вызывать сами функции из класса. Вообщем-то три основных метода.
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 05.08.2008
Сообщений: 7
|
|
| 07.08.2008, 09:58 [ТС] | |
|
Vourhey огромное СПАСИБО всё получилось!
Указатель-просто как всё гениальное!Если вдруг кому-то понадобится информация по CAN-сетям обращайтесь!
0
|
|
| 07.08.2008, 09:58 | |
|
Помогаю со студенческими работами здесь
12
Проблема с видимостью HDD Проблема с видимостью переменных Управление видимостью объекта при наведении на него курсора Проблема с видимостью Окон в Spy++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|