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

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

Страниц: 1 [2] 3 4   Вниз
  Печать  
Автор Тема: Сигналы из меню?  (Прочитано 19788 раз)
alexis031182
Гость
« Ответ #15 : Апрель 10, 2012, 12:33 »

http://ru.wikipedia.org/wiki/Анонимная_функция
Едрить, понял Улыбающийся просто не знал, что анонимные так называют
Записан
Javaca
Гость
« Ответ #16 : Апрель 10, 2012, 13:19 »

Мне одному показалось, что вот это:
Код:
QObject::connect(mesaga, SIGNAL(triggered()), &func, SLOT(showInfo()));
несколько короче, нежели приведённый пример с Gtk?

И чем короче приведенный вами код от этого?  Кол-вом символов Смеющийся

Код:
g_signal_connect (G_OBJECT (mesaga), "activate", G_CALLBACK (show_info), (gpointer) window);

P.S. Вечный спор.

Никакого спора нет. Насколько я понимаю в Qt невозможно напрямую вызвать функцию из меню в Сишном стиле, тогда как в GTK существует как минимум два способа вызовов, используя например g_signal_connect или gtk_signal_connect?
на мой взгляд на данный момент, кроме реализации MDI в Qt, никаких преимуществ у Qt нет, например перед GTK. Вопрос остается открытым !!!
Записан
iroln
Гость
« Ответ #17 : Апрель 10, 2012, 13:34 »

Насколько я понимаю в Qt невозможно напрямую вызвать функцию из меню в Сишном стиле, тогда как в GTK существует как минимум два способа вызовов, используя например g_signal_connect или gtk_signal_connect?
на мой взгляд на данный момент, кроме реализации MDI в Qt, никаких преимуществ у Qt нет, например перед GTK. Вопрос остается открытым !!!
Печалька  Строит глазки

Qt - это объектно-ориентированная библиотека, в ней принято работать на уровне классов и взаимодействия объектов. Все callback'и (назовём их так) реализуются через механизм сигнал-слот. Что вам не понятно? Вы книжки про ООП и Qt вообще читали? Зачем нужно пытаться писать в "сишном" стиле при использовании Qt, я этого не понимаю.

« Последнее редактирование: Апрель 10, 2012, 13:37 от iroln » Записан
V1KT0P
Гость
« Ответ #18 : Апрель 10, 2012, 13:35 »

Вопрос остается открытым !!!
Что за вопрос? Как вызвать обычную функцию при нажатии?
Как говорится: "Не лезь в чужой монастырь со своими правилами".
В аттаче я изменил твой код так, как это принято делать в Qt.
Записан
Bepec
Гость
« Ответ #19 : Апрель 10, 2012, 13:42 »

Хе хе хе. Невозможно прямо вызвать функцию в стиле С. Да вызывай, кто тебе мешает?

Всего то <твой класс>-><слот выполнения функции>.

Нежелаешь разбираться и чужой устав в другой язык суёшь.

PS количество символов, это что - ничто. А вот что такое читабельность и отсутствие громоздкости конструкций - скажи ка мне Подмигивающий
Записан
Javaca
Гость
« Ответ #20 : Апрель 10, 2012, 13:56 »

В аттаче я изменил твой код так, как это принято делать в Qt.

Зад принято подтирать туалетной бумагой, а кто сказал, что его нельзя подтереть чем нибудь-другим, например газетой или тетрадным листом? Смеющийся Благодарю за код, но вопрос был совсем другой. Меня интересует вызов функции напрямую без вынесения ее в класс. К сожалению ваш код после компиляции весит 25 Кб, что два раза больше скомпилированного моего кода вес которого составляет 12 Кб.
Записан
mutineer
Гость
« Ответ #21 : Апрель 10, 2012, 13:57 »

В аттаче я изменил твой код так, как это принято делать в Qt.

Зад принято подтирать туалетной бумагой, а кто сказал, что его нельзя подтереть чем нибудь-другим, например газетой или тетрадным листом? Смеющийся Благодарю за код, но вопрос был совсем другой. Меня интересует вызов функции напрямую без вынесения ее в класс. К сожалению ваш код после компиляции весит 25 Кб, что два раза больше скомпилированного моего кода вес которого составляет 12 Кб.

Если ты гоняешься за килобайтами в бинарнике, то в сторону Qt тебе лучше не смотреть...
Записан
Bepec
Гость
« Ответ #22 : Апрель 10, 2012, 13:59 »

И вообще переходить на ассемблер Подмигивающий

По секрету скажу - писать программу в машинных кодах, самое то. Ещё и upx'сом запаковать.
Записан
V1KT0P
Гость
« Ответ #23 : Апрель 10, 2012, 14:03 »

В аттаче я изменил твой код так, как это принято делать в Qt.

Зад принято подтирать туалетной бумагой, а кто сказал, что его нельзя подтереть чем нибудь-другим, например газетой или тетрадным листом? Смеющийся Благодарю за код, но вопрос был совсем другой. Меня интересует вызов функции напрямую без вынесения ее в класс. К сожалению ваш код после компиляции весит 25 Кб, что два раза больше скомпилированного моего кода вес которого составляет 12 Кб.
О да на фоне библиотек весом минимум в 12 мегабайт это реально большой размер.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #24 : Апрель 10, 2012, 14:10 »

Благодарю за код, но вопрос был совсем другой. Меня интересует вызов функции напрямую без вынесения ее в класс. К сожалению ваш код после компиляции весит 25 Кб, что два раза больше скомпилированного моего кода вес которого составляет 12 Кб.
Ну так зачем Вам тогда "такой плохой" Qt?  Улыбающийся Продолжайте пользовать GTK или др. тул - и все дела. Напр я всегда тихо ненавидел командную строку, но что поделать если иногда "так надо", мало ли чего мне нравится или нет.

Зад принято подтирать туалетной бумагой, а кто сказал, что его нельзя подтереть чем нибудь-другим, например газетой или тетрадным листом? Смеющийся
Классики подробно обсуждали этот вопрос
Цитировать
кто подтирает зад бумагой - тот весь обрызган желтой влагой
(примерно как с вызовом static ф-ции  Улыбающийся)
Записан
alexis031182
Гость
« Ответ #25 : Апрель 10, 2012, 14:13 »

Зад принято подтирать туалетной бумагой, а кто сказал, что его нельзя подтереть чем нибудь-другим, например газетой или тетрадным листом? Смеющийся
Могу с уверенностью заявить (и многие со мной согласятся), что "чем-нибудь другим" навряд ли доставит удовольствие

Благодарю за код, но вопрос был совсем другой. Меня интересует вызов функции напрямую без вынесения ее в класс.
В ООП это не нужно. А смешение стилей к добру не приведёт скорее всего.

К сожалению ваш код после компиляции весит 25 Кб, что два раза больше скомпилированного моего кода вес которого составляет 12 Кб.
25 Кб изящного кода. Чем не повод возрадоваться?
Записан
V1KT0P
Гость
« Ответ #26 : Апрель 10, 2012, 14:18 »

К сожалению ваш код после компиляции весит 25 Кб, что два раза больше скомпилированного моего кода вес которого составляет 12 Кб.
Fix:
Цитировать
К сожалению ваш рабочий код после компиляции весит 25 Кб, что два раза больше скомпилированного моего нерабочего кода вес которого составляет 12 Кб.
Кстати UPX сжимает до 10.5 Кб.
Записан
iroln
Гость
« Ответ #27 : Апрель 10, 2012, 14:24 »

Могу с уверенностью заявить (и многие со мной согласятся), что "чем-нибудь другим" навряд ли доставит удовольствие
На востоке давно придумали более изящное решение - подмывание.  Смеющийся

Javaca, чего вы хотите доказать? Что Qt - говно, потому что не умеет вызывать функции, определённые вне классов? При этом ваш аргумент только один: 12кб против 25кб. Ну это просто смешно. Словно всё сравнивается только размерами. Улыбающийся
Записан
alexis031182
Гость
« Ответ #28 : Апрель 10, 2012, 14:27 »

На востоке давно придумали более изящное решение - подмывание.  Смеющийся
Восток - дело тонкое )) сорри за оффтоп
Записан
Javaca
Гость
« Ответ #29 : Апрель 10, 2012, 14:35 »

Видите сколько Вы способов назвали о том как подтереть зад Смеющийся Но ни назвали ни одного способа, как реализовать вызов функции из меню без внесения ее в класс. Одно сплошное словоблудие  Показает язык

Могу с уверенностью заявить (и многие со мной согласятся), что "чем-нибудь другим" навряд ли доставит удовольствие

Зад подтирают не ради удовольствия, а ради чистоты  Смеющийся

В ООП это не нужно. А смешение стилей к добру не приведёт скорее всего.

К добру не приводит пьянство, табакокурение и наркомания, а вызов обычной функции из меню уж никак к этому не относится.

25 Кб изящного кода. Чем не повод возрадоваться?


12 Кб изящного кода. Чем не повод возрадоваться? Подмигивающий
Записан
Страниц: 1 [2] 3 4   Вверх
  Печать  
 
Перейти в:  


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