Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
6 / 3 / 0
Регистрация: 04.05.2018
Сообщений: 407
1

Объявление переменной для методов

02.07.2019, 15:38. Показов 2312. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Мне необходимо несколько глобальных переменных для моего проекта, обьявил я их в файле mainwindow.h в public. Использую я их только в файле mainwindow.cpp (Наверное нужно обьявлять переменные не в public а в private?). Далее допустим у меня есть свой виджет (условно назовем его MyWidget). в файле MyWidget.dh я пишу следующие строки:
C++ (Qt)
1
2
3
4
....
protected:
    virtual void mousePressEvent(QMouseEvent *);
....
В файле mainwindow.cpp я реализую метод:
C++ (Qt)
1
2
3
4
5
....
void MyWidget::mousePressEvent(QMouseEvent *){
    ....;
}
....
И в итоге в методе mousePressEvent, не видно моей переменной объявленной ранее в файле mainwindow.h.
Вопрос: как сделать так, чтобы данный метод увидел мою переменную и мог ее изменять?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.07.2019, 15:38
Ответы с готовыми решениями:

Netbeans, qt, c++ подчеркивает как ошибку объявление переменной
в netbeans пишу вот эту функцию, где хочу получить введенный в форме текст. а мне после компиляции...

Шаблонный класс для работы с разными типами данных и объявление методов в main
есть класс шаблонный, но не могу объявить методы в main и сделать длядругих типов :(когда делала...

Объявление переменной для хранения безразмерного массива
Добрый день!.Работаю в среде Eclipse на java. Подскажите пожалуйста, можно ли указать переменную...

Подскажите код VBA для Excel - Объявление переменной
Помогите с кодом ВБА для Экселя. В столбце "А" указан "код заказа" в стобце "B" цена. Возможно ли...

9
284 / 173 / 62
Регистрация: 13.03.2019
Сообщений: 419
02.07.2019, 17:10 2
Цитата Сообщение от MetMark Посмотреть сообщение
...в public
Здаётся мне, что ты объявил не глобальные переменные.

В .h файле вне всяких секций, вне объявлений классов, лучше всего в отдельном .h файлеБ например, global_variables.h пишем

C++ (Qt)
1
extern  int myVariable;
В .cpp файле, например, mainwindow.cpp тоже вне тел функций пишем:

C++ (Qt)
1
int myVariable;
Везде, где нужен доступ к глобальной переменной включаем недер:

C++ (Qt)
1
#include "global_variables.h"
Но правильнее всего всё же избегать глобальных переменных.
1
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
02.07.2019, 17:12 3
В реализации MyWidget::mousePressEvent вызывать обработку класса-родителя, т.е. QWidget::mousePressEvent (или кто там родитель)
0
6 / 3 / 0
Регистрация: 04.05.2018
Сообщений: 407
02.07.2019, 17:16  [ТС] 4
Цитата Сообщение от Анна по жизни Посмотреть сообщение
global_variables.h пишем
Цитата Сообщение от Анна по жизни Посмотреть сообщение
вне тел функций пишем
Т.е. я должен объявить глобальную переменную 2 раза, учитывая синтаксис в .h и .cpp!?

Спасибо вам огромное, Анна

Добавлено через 53 секунды
TRam_,
Цитата Сообщение от TRam_ Посмотреть сообщение
В реализации MyWidget::mousePressEvent вызывать обработку класса-родителя, т.е. QWidget::mousePressEvent (или кто там родитель)
Для чего?

А, если это способ избежать глобальных переменных, то понял
0
284 / 173 / 62
Регистрация: 13.03.2019
Сообщений: 419
02.07.2019, 17:26 5
Цитата Сообщение от MetMark Посмотреть сообщение
Т.е. я должен объявить глобальную переменную 2 раза, учитывая синтаксис в .h и .cpp!?

в .cpp эта переменная не просто объявляется, но и определяется. то есть, выделяется память.
в .h файле объявление без выделения памяти. Это информация для всех остальных, мол, есть такая переменная.
1
661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,967
02.07.2019, 19:49 6
Цитата Сообщение от Анна по жизни Посмотреть сообщение
Но правильнее всего всё же избегать глобальных переменных.
Если есть несколько файлов .cpp и хедеров соответственно - как правильно объявить переменную, которую будет видно во всех этих файлах?с
0
278 / 87 / 37
Регистрация: 10.06.2015
Сообщений: 261
02.07.2019, 20:46 7
В заголовочном файле, который будут подключать все остальные, пишешь объявление с ключевым словом extern. В один из файлов исходников дописываешь определение для этой переменной.
0
6 / 3 / 0
Регистрация: 04.05.2018
Сообщений: 407
02.07.2019, 20:52  [ТС] 8
Lolobotik, На сколько ваше решение лучше решения которое предложила Анна?
0
661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,967
02.07.2019, 20:59 9
Цитата Сообщение от Lolobotik Посмотреть сообщение
В заголовочном файле, который будут подключать все остальные, пишешь объявление с ключевым словом extern.
Это и есть глобальная переменная - которых нужно всячески избегать.
0
278 / 87 / 37
Регистрация: 10.06.2015
Сообщений: 261
02.07.2019, 21:48 10
Цитата Сообщение от alexu_007 Посмотреть сообщение
Это и есть глобальная переменная - которых нужно всячески избегать.
Ну извиняй,
Цитата Сообщение от alexu_007 Посмотреть сообщение
переменную, которую будет видно во всех этих файлах
это и есть глобальная переменная. Какой ответ ты ожидал увидеть? Что можно обойтись без них? Ну можно.

Цитата Сообщение от MetMark Посмотреть сообщение
Lolobotik, На сколько ваше решение лучше решения которое предложила Анна?
Ни на сколько. Это оно и есть. Я просто не так понял предыдущего оратора. Он, видимо, просил альтернатив глобальным переменным, но сформулировал это своеобразно.
0
02.07.2019, 21:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2019, 21:48
Помогаю со студенческими работами здесь

Объявление методов
Создал консольное приложение в двух разных IDE: Visual Studio 2017 и Sharp Develop. В первой при...

Объявление методов в интерфейсах
Добрый вечер! Требуется в интерфейсе создать метод, чтобы после реализации этого интерфейса неким...

Объявление методов вне класса
Уважаемые участники форума! Подскажите пожалуйста, существует ли возможность объявлять тела...

Объявление заранее неизвестного количество методов в цикле
Добрый день! Как можно сделать так, чтобы в зависимости от введенного параметра, объявлялось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru