Russian Qt Forum
Ноябрь 23, 2024, 07:00
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Незнаю как правильно озаглавить тему
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Незнаю как правильно озаглавить тему (Прочитано 8174 раз)
RoulanD
Гость
Незнаю как правильно озаглавить тему
«
:
Апрель 27, 2011, 13:56 »
В общем так. У меня есть QString str="setGeometry(0,0,100,100)"; ну или любая другая функция, как мне её реализовать. Как это действие правильно называется я не знаю, отсюда и название темы. То есть, проще говоря, как команду записанную в строке выполнить в нужном месте.
«
Последнее редактирование: Апрель 27, 2011, 15:50 от RoulanD
»
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Незнаю как правильно озаглавить тему
«
Ответ #1 :
Апрель 27, 2011, 14:00 »
Мде...
Во-первых, форум не тот.
Во-вторых, внимательно и несколько раз прочитай то, что сам написал. И делай выводы.
Записан
Qt 5.11/4.8.7 (X11/Win)
RoulanD
Гость
Re: Незнаю как правильно озаглавить тему
«
Ответ #2 :
Апрель 27, 2011, 15:24 »
Прочитал несколько раз, тем не менее вопрос остался.
во 1 - прошу не писать посты типа: "внимательно прочитай" или "не проще просто реализовать функцию" и т.п.
во 2 - предупреждайте в личку или на мыло о переносе темы, это адресовано тому кто переносит и веб разрабам.
GreatSnake
а вы лучше бы стёрли своё во 2-х =)
если смысл вопросы не ясен то не пишите.
«
Последнее редактирование: Апрель 27, 2011, 15:26 от RoulanD
»
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Незнаю как правильно озаглавить тему
«
Ответ #3 :
Апрель 27, 2011, 15:28 »
Ну сам подумай - сам не знаешь как это называется, нормально объяснить что тебе нужно не можешь и начинаешь обижаться.
Хочешь получать нормальные ответы - ставь нормальные вопросы.
Записан
Qt 5.11/4.8.7 (X11/Win)
RoulanD
Гость
Re: Незнаю как правильно озаглавить тему
«
Ответ #4 :
Апрель 27, 2011, 15:31 »
Название форума освобождает меня от незнание этого действия.
А вопрос вполне правильно написан.
Разжую: У нас есть строковая запись какой либо функции, нужно её реализовать в нужном месте. Хм тоже самое получилось. Как объяснить проще я не знаю.
Записан
Fat-Zer
Гость
Re: Незнаю как правильно озаглавить тему
«
Ответ #5 :
Апрель 27, 2011, 15:44 »
что вы спрашиваете действительно очень туманно... если вы спрашиваете, как распарсить строку и вызвать соответствующую функцию? то, дык, только ручками...
или хотя бы на псевдокоди напишите, что вам надо...
Записан
Archa4
Гость
Re: Незнаю как правильно озаглавить тему
«
Ответ #6 :
Апрель 27, 2011, 15:48 »
К сожадению помочь не могу, но может удасться другим получше объяснить (если я все правильно понял).
Допустим есть QString str с содержанием типа "setGeometri(0,0,100,100)".
Как эту строчку подать в программный код, чтобы компилятор её выполнил?
Пример:
QWidget *widget;
widget->setGeometry(0, 0, 100, 100); НО вместо setGeometry(0, 0, 100, 100) подать строчку из QString...
Записан
RoulanD
Гость
Re: Незнаю как правильно озаглавить тему
«
Ответ #7 :
Апрель 27, 2011, 15:49 »
Абсолютно верно.
http://www.prog.org.ru/topic_17653_0.html
По моему в этой теме обсуждали что то похожее, но всё очень туманно, нужно конкретнее.
Записан
Fat-Zer
Гость
Re: Незнаю как правильно озаглавить тему
«
Ответ #8 :
Апрель 27, 2011, 16:00 »
Тогда средствами с++ такого не добится. К объектам, унаследованным от QObject по их именам - возможно добраться, но к методу по строке - только распарсить.
Записан
RoulanD
Гость
Re: Незнаю как правильно озаглавить тему
«
Ответ #9 :
Апрель 27, 2011, 16:05 »
хм... А вы посмотрели тему, линк на которую я дал?
Записан
Fat-Zer
Гость
Re: Незнаю как правильно озаглавить тему
«
Ответ #10 :
Апрель 27, 2011, 16:09 »
Цитата: RoulanD от Апрель 27, 2011, 16:05
хм... А вы посмотрели тему, линк на которую я дал?
там как раз вопрос о поиске объекта по имени
ЗЫ: внимательно прочитайте какую-нибудь книжку по C++
Записан
RoulanD
Гость
Re: Незнаю как правильно озаглавить тему
«
Ответ #11 :
Апрель 27, 2011, 16:16 »
Цитата: Fat-Zer от Апрель 27, 2011, 16:09
ЗЫ: внимательно прочитайте какую-нибудь книжку по C++
Не люблю я такие вещи =) сюда без базового знания С++ не приходят.
А по теме: в Qt просто обязан быть такой класс который предусматривал бы вызов методов по их строковому представлению.
Ладно... Если ещё пару знающих людей напишут что это невозможно то буду искать другие пути =)
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Незнаю как правильно озаглавить тему
«
Ответ #12 :
Апрель 27, 2011, 16:17 »
Цитировать
А по теме: в Qt просто обязан быть такой класс который предусматривал бы вызов методов по их строковому представлению.
И кто мешал про это сразу сказать? А то - "как команду записанную в строке выполнить в нужном месте."
См. QMetaObject::invokeMethod(). Но оный работает только с сигналами и слотами.
т.е. setGeometry(0, 0, 100, 100) вызывать не получится, т.к. оный не слот.
«
Последнее редактирование: Апрель 27, 2011, 16:25 от GreatSnake
»
Записан
Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Незнаю как правильно озаглавить тему
«
Ответ #13 :
Апрель 27, 2011, 16:26 »
Цитата: RoulanD от Апрель 27, 2011, 13:56
То есть, проще говоря, как команду записанную в строке выполнить в нужном месте.
Это называется "интепретировать". В некоторых языках это делается просто (т.к. они сами "интерпретаторы"), но в C/С++ нет. Может в Qt есть специальные средства, о которых мне тоже было бы интересно узнать. Во всяком случае удовольствие будет дорогое, так что если нужно сделать просто несколько/немного таких вызовов, то лучше обойтись указателями на ф-ции.
Записан
Denjs
Гость
Re: Незнаю как правильно озаглавить тему
«
Ответ #14 :
Апрель 27, 2011, 16:28 »
С++ - это компилируемый язык а не интерпретируемый.
Вы не сможете испольнить для объекта функцию из строки, если сами не научите класс эту строку разбирать.
Если брать Qt - то у него есть система метаданных, и вы сможете дергнуть invokeMethod() но он как сказали ранее - работает только с сигналами и слотами.
ещё вы можете погрузить объект типа QWidget в скриптовую среду QtScript (а это уже интерпретируемый язык), и сгенерировать текст скрипта который попытается сделать "setGeometry(0, 0, 100, 100)" - но там тоже - только сигналы и слоты. Либо специальным образом описанная паблик функция.
В общем понимайте разницу между "компиляторами" и"интерпретаторами".
_____________________
Igors, ну как ты мог мою реплику украсть на минуту раньше?!
«
Последнее редактирование: Апрель 27, 2011, 16:31 от Denjs
»
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...