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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Событие меню из GUI  (Прочитано 7863 раз)
Evgen
Гость
« : Октябрь 07, 2012, 16:03 »

Здравствуйте! Изучаю QT 4.5. C помощью мастера создал проект "GUI приложение 4 ". В визуальном редакторе для меню "File" создал подменю "Open". Где и как мне написать, чтоб при выборе меню "Open" выполнялась моя функция ?

p.s. Изучаю по книге Шлее, там описано только как создать меню программно, а я хочу попробовать создавать в визуальном редакторе.
Записан
Bepec
Гость
« Ответ #1 : Октябрь 07, 2012, 16:09 »

Соединить сигнал нажатия этого пункта меню со своим слотом.

Читайте про сигнал-слотовые соединения.

PS это относится к любому виду создания меню.
Записан
Evgen
Гость
« Ответ #2 : Октябрь 07, 2012, 16:28 »

спасибо за отклик

сигнал называется "fileOpen", моя функция "fnMyFunction".
1. Для сигнала "fileOpen" объектом будет QMenu?
 
2. В каком месте программы надо проводить соединение объектов?

Больше занимался процедурным программированием, поэтому ООП немного вводит в тупик, если можно пример кода
Записан
V1KT0P
Гость
« Ответ #3 : Октябрь 07, 2012, 16:40 »

Больше занимался процедурным программированием, поэтому ООП немного вводит в тупик, если можно пример кода
Лучше прочитай начало книги по Qt(например "Qt4.5. Профессиональное программирование на C++").
Записан
Bepec
Гость
« Ответ #4 : Октябрь 07, 2012, 16:48 »

У тебя есть QMenu. В QMenu есть QAction - это пункты находящиеся в нём.
Тебе нужно либо при создании подключить, либо позже.

PS для тебя же будет понятнее, если ты приведёшь код создания меню и свою функцию, а я её тебе подправлю как надо.
Записан
Evgen
Гость
« Ответ #5 : Октябрь 07, 2012, 17:37 »

PS для тебя же будет понятнее, если ты приведёшь код создания меню и свою функцию, а я её тебе подправлю как надо.

В том то и дело что кода создания меню нет, он находится в файле mainwindow.ui 
А своя функция может быть банальным вызовом  MessageBox.
На всякий случай файл проекта положил http://rusfolder.com/33000636
Записан
V1KT0P
Гость
« Ответ #6 : Октябрь 07, 2012, 17:46 »

В том то и дело что кода создания меню нет, он находится в файле mainwindow.ui 
А своя функция может быть банальным вызовом  MessageBox.
На всякий случай файл проекта положил http://rusfolder.com/33000636
Еслиб ты внял моему совету и прочитал бы книгу, то знал бы что достаточно соединить сигнал объекта со слотом другого объекта.
Хотя бы кьютовские примеры посмотрел.
Ты даже не соизволил минимальную документацию по кьюту почитать. А ведь там основные концепции объясняются, при чем есть даже перевод на русский.
Записан
Evgen
Гость
« Ответ #7 : Октябрь 07, 2012, 17:49 »

Больше занимался процедурным программированием, поэтому ООП немного вводит в тупик, если можно пример кода
Лучше прочитай начало книги по Qt(например "Qt4.5. Профессиональное программирование на C++").

Ее и изучаю. Автор Макс Шлее. В 32 главе описывается меню, но оно ничего не делает. А вот как связать меню и действия я пока не дошел
Записан
Evgen
Гость
« Ответ #8 : Октябрь 07, 2012, 17:54 »

Хотя бы кьютовские примеры посмотрел.

Ты можешь привести пример, чтобы по вызову пункта меню IconItem из листинга 32.1 всплывал MessageBox c надписью "I am here"?
Записан
mutineer
Гость
« Ответ #9 : Октябрь 07, 2012, 17:55 »

Больше занимался процедурным программированием, поэтому ООП немного вводит в тупик, если можно пример кода
Лучше прочитай начало книги по Qt(например "Qt4.5. Профессиональное программирование на C++").

Ее и изучаю. Автор Макс Шлее. В 32 главе описывается меню, но оно ничего не делает. А вот как связать меню и действия я пока не дошел

То есть ты решил не дочитывать книгу, а сразу полезть на форум? Так может вообще ее выкинешь за ненадобностью?
Записан
V1KT0P
Гость
« Ответ #10 : Октябрь 07, 2012, 18:03 »

Ты можешь привести пример, чтобы по вызову пункта меню IconItem из листинга 32.1 всплывал MessageBox c надписью "I am here"?
Выложи листинг в аттач в виде проекта и я сделаю. Книг по Qt не читал вообще, вполне хватает документации(которую я считаю самой лучшей из мною виденных).
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #11 : Октябрь 07, 2012, 18:09 »

Ну вот допустим я той книги в глаза не видел, как бы я делал. Открыл букварь - ага, пункты добавляются и возвращают QAction - что это за зверь? Нашел первый попавшийся файл где есть QAction, такая строка
Код
C++ (Qt)
QAction *newAction = fileMenu->addAction(tr("&New..."));
 
Ага, значит действие привяжут к нему. Ищу дальше по тексту newAction. Через 5 строк
Код
C++ (Qt)
connect(newAction, SIGNAL(triggered()), this, SLOT(openDialog()));
 
Ну так все ясно

Еслиб ты внял моему совету ..
Хотя бы ..
Ты даже не соизволил ...
основные концепции..
А может не надо "надувать щеки" и воображать "концепции" - это доступно любому школьнику и профессионализма здесь - с гулькин "нос"  Улыбающийся

 

Записан
Evgen
Гость
« Ответ #12 : Октябрь 07, 2012, 18:13 »


Выложи листинг в аттач в виде проекта и я сделаю. Книг по Qt не читал вообще, вполне хватает документации(которую я считаю самой лучшей из мною виденных).
Записан
V1KT0P
Гость
« Ответ #13 : Октябрь 07, 2012, 18:34 »

Выложи листинг в аттач в виде проекта и я сделаю. Книг по Qt не читал вообще, вполне хватает документации(которую я считаю самой лучшей из мною виденных).
Смотри.
Записан
Evgen
Гость
« Ответ #14 : Октябрь 07, 2012, 18:53 »

Выложи листинг в аттач в виде проекта и я сделаю. Книг по Qt не читал вообще, вполне хватает документации(которую я считаю самой лучшей из мною виденных).
Смотри.

Cпасибо, прояснилось. )  А как найти объект QMenu, если меню создавалась через GUI и находится в файле *.UI?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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