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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Переменная объекта  (Прочитано 8702 раз)
ruzik
Гость
« : Февраль 04, 2011, 19:18 »

Обращение к переменной объекта
А как обратиться к переменной объекта, например мне нужен text у QLineEdit
Вот так выдает ошибку
QLineEdit.text
QLineEdit->getText()
Записан
Omg
Гость
« Ответ #1 : Февраль 04, 2011, 19:41 »

Если обращение внутри класса то просто:
В заголовочном:
QLineEdit line;
в конструкторе класса инициируем текст едит.
line = new QLineEdit;

а потом где угодно внутри класса обращаемся
line.text();
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Февраль 04, 2011, 19:45 »

ruzik, это вопрос по с++. Ты его совершенно не знаешь. Не питонщик, случаем?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ruzik
Гость
« Ответ #3 : Февраль 04, 2011, 20:44 »

Нет, С++ я знаю вроде как достаточно неплохо, насколько может знать 10 классник, раньше какое-то время сидел на net'e
А как раз таки С++ обращение, то есть QLineEdit.text не идет, оказывается надо еще и скобки писать(то есть обращение к функции, а не к переменной text типа QString)
Просто опыта еще очень мало, С++ сам выучил, net тоже(хотя его я не особо выучил, так баловался)
Записан
Omg
Гость
« Ответ #4 : Февраль 04, 2011, 21:06 »

Где в классе QLineEdit вы нашли переменную к которой можно обратиться?
line.text() вызывает метод объекта класса QLineEdit
"text : QString

This property holds the line edit's text.

Setting this property clears the selection, clears the undo/redo history, moves the cursor to the end of the line and resets the modified property to false. The text is not validated when inserted with setText().

The text is truncated to maxLength() length.

By default, this property contains an empty string.

Access functions:

QString text () const
void setText ( const QString & )
See also insert() and clear()."
Записан
ufna
Гость
« Ответ #5 : Февраль 04, 2011, 21:08 »

Нет, С++ я знаю вроде как достаточно неплохо, насколько может знать 10 классник, раньше какое-то время сидел на net'e
А как раз таки С++ обращение, то есть QLineEdit.text не идет, оказывается надо еще и скобки писать(то есть обращение к функции, а не к переменной text типа QString)
Просто опыта еще очень мало, С++ сам выучил, net тоже(хотя его я не особо выучил, так баловался)

В 10м классе сипипи можно знать гораздо лучше )

а вопрос как раз из ряда лексики языка, что есть основы.
Записан
ruzik
Гость
« Ответ #6 : Февраль 04, 2011, 21:32 »

Цитировать
Где в классе QLineEdit вы нашли переменную к которой можно обратиться?
Так я же по-моему и написал, что хотел обратиться как к переменной, как например в net'e, по незнанию, и меня исправили, что надо обращаться к нужной функции
Цитировать
В 10м классе сипипи можно знать гораздо лучше )
а вопрос как раз из ряда лексики языка, что есть основы.
Нет вы не правы, вопрос по лексике фраемворка, а не самого С++, так как это Qt диктует, что если хочешь получить текст используй функцию, просто удобно было бы сделать предпроцессор, который бы в таком случае позволял бы обращаться к переменным объектов, и по-моему непонятно почему не так это реализовали
Например в net'e подобная реализация(та про которую я говорю), насколько я знаю в mfc
« Последнее редактирование: Февраль 04, 2011, 21:36 от ruzik » Записан
Omg
Гость
« Ответ #7 : Февраль 04, 2011, 21:43 »

Код:
class ABC{
private:
   int integer;

public:
   int i(void){return integer;}
}
причем тут кутя? А реализовали это приследуя простое правило: инкапсуляция.
« Последнее редактирование: Февраль 04, 2011, 21:45 от Omg » Записан
ieroglif
Гость
« Ответ #8 : Февраль 05, 2011, 00:57 »

нет смысла устраивать холиворсы.
данный момент действительно является моментом Qt.
оффтоп: но стоит понимать разницу между указателем на объект и переменной объекта ("->" и ".").
в Qt обращение к переменным объектов реализовано по максимуму через методы, и прямого доступа к переменным обычно нету.
что бы получить text - есть метод text() возвращающий QString.
что бы установить text - есть setText(QString)
так же это связано с Q_PROPERTY, позволяющим оперировать параметрами объекта самыми различными способами (например из QtScript, или через setProperty(..) метод), так что это в итоге становится более выгодно, нежели открывать переменную объекта напрямую.
имхо, конечно Подмигивающий
Записан
Sancho_s_rancho
Гость
« Ответ #9 : Февраль 05, 2011, 11:03 »

Цитировать
С++ сам выучил
В стандарте более 1000 страниц "мелким почерком" и плюс к этому ссылки на другие стандарты (к примеру на "С"). Ежели бы ты "выучил" C++, то простейших вопросов по соглашениям во фреимвоке Qt не было бы.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #10 : Февраль 05, 2011, 11:12 »

ruzik, читай Страуструпа. Раздел про классы. Сам все поймешь.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Blackwanderer
Гость
« Ответ #11 : Февраль 05, 2011, 12:09 »

данный момент действительно является моментом Qt.
Отнюдь. Это - основы ООП, даже безотносительно к какому-либо языку. Доступ к переменным класса должен идти через методы класса. Это позволяет пользователю не думать о том, как реализована внутренняя структура класса. От Qt тут только принцип именования функций доступа.
Записан
ieroglif
Гость
« Ответ #12 : Февраль 05, 2011, 14:06 »

данный момент действительно является моментом Qt.
Отнюдь. Это - основы ООП, даже безотносительно к какому-либо языку. Доступ к переменным класса должен идти через методы класса. Это позволяет пользователю не думать о том, как реализована внутренняя структура класса. От Qt тут только принцип именования функций доступа.
готов признать что я не прав =) давайте только без холировсов? =)
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #13 : Февраль 05, 2011, 15:20 »

Черный Странник
В дотнете доступ идет по имени переменной: string.text, а геттеры/сеттеры зовутся автоматом. То есть там как раз таки пишут string.text = "abc"; Так что не надо тут про основы ООП вспоминать)
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #14 : Февраль 05, 2011, 15:41 »

А дотнете это эталон чтоли?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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