Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Evgen от Октябрь 07, 2012, 16:03



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

p.s. Изучаю по книге Шлее, там описано только как создать меню программно, а я хочу попробовать создавать в визуальном редакторе.


Название: Re: Событие меню из GUI
Отправлено: Bepec от Октябрь 07, 2012, 16:09
Соединить сигнал нажатия этого пункта меню со своим слотом.

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

PS это относится к любому виду создания меню.


Название: Re: Событие меню из GUI
Отправлено: Evgen от Октябрь 07, 2012, 16:28
спасибо за отклик

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

Больше занимался процедурным программированием, поэтому ООП немного вводит в тупик, если можно пример кода


Название: Re: Событие меню из GUI
Отправлено: V1KT0P от Октябрь 07, 2012, 16:40
Больше занимался процедурным программированием, поэтому ООП немного вводит в тупик, если можно пример кода
Лучше прочитай начало книги по Qt(например "Qt4.5. Профессиональное программирование на C++").


Название: Re: Событие меню из GUI
Отправлено: Bepec от Октябрь 07, 2012, 16:48
У тебя есть QMenu. В QMenu есть QAction - это пункты находящиеся в нём.
Тебе нужно либо при создании подключить, либо позже.

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


Название: Re: Событие меню из GUI
Отправлено: Evgen от Октябрь 07, 2012, 17:37
PS для тебя же будет понятнее, если ты приведёшь код создания меню и свою функцию, а я её тебе подправлю как надо.

В том то и дело что кода создания меню нет, он находится в файле mainwindow.ui 
А своя функция может быть банальным вызовом  MessageBox.
На всякий случай файл проекта положил http://rusfolder.com/33000636


Название: Re: Событие меню из GUI
Отправлено: V1KT0P от Октябрь 07, 2012, 17:46
В том то и дело что кода создания меню нет, он находится в файле mainwindow.ui 
А своя функция может быть банальным вызовом  MessageBox.
На всякий случай файл проекта положил http://rusfolder.com/33000636
Еслиб ты внял моему совету и прочитал бы книгу, то знал бы что достаточно соединить сигнал объекта со слотом другого объекта.
Хотя бы кьютовские примеры посмотрел.
Ты даже не соизволил минимальную документацию по кьюту почитать. А ведь там основные концепции объясняются, при чем есть даже перевод на русский.


Название: Re: Событие меню из GUI
Отправлено: Evgen от Октябрь 07, 2012, 17:49
Больше занимался процедурным программированием, поэтому ООП немного вводит в тупик, если можно пример кода
Лучше прочитай начало книги по Qt(например "Qt4.5. Профессиональное программирование на C++").

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


Название: Re: Событие меню из GUI
Отправлено: Evgen от Октябрь 07, 2012, 17:54
Хотя бы кьютовские примеры посмотрел.

Ты можешь привести пример, чтобы по вызову пункта меню IconItem из листинга 32.1 всплывал MessageBox c надписью "I am here"?


Название: Re: Событие меню из GUI
Отправлено: mutineer от Октябрь 07, 2012, 17:55
Больше занимался процедурным программированием, поэтому ООП немного вводит в тупик, если можно пример кода
Лучше прочитай начало книги по Qt(например "Qt4.5. Профессиональное программирование на C++").

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

То есть ты решил не дочитывать книгу, а сразу полезть на форум? Так может вообще ее выкинешь за ненадобностью?


Название: Re: Событие меню из GUI
Отправлено: V1KT0P от Октябрь 07, 2012, 18:03
Ты можешь привести пример, чтобы по вызову пункта меню IconItem из листинга 32.1 всплывал MessageBox c надписью "I am here"?
Выложи листинг в аттач в виде проекта и я сделаю. Книг по Qt не читал вообще, вполне хватает документации(которую я считаю самой лучшей из мною виденных).


Название: Re: Событие меню из GUI
Отправлено: Igors от Октябрь 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()));
 
Ну так все ясно

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

 



Название: Re: Событие меню из GUI
Отправлено: Evgen от Октябрь 07, 2012, 18:13

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


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


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

Cпасибо, прояснилось. )  А как найти объект QMenu, если меню создавалась через GUI и находится в файле *.UI?


Название: Re: Событие меню из GUI
Отправлено: V1KT0P от Октябрь 07, 2012, 19:06
Cпасибо, прояснилось. )  А как найти объект QMenu, если меню создавалась через GUI и находится в файле *.UI?
Я все-же советую тебе прочитать документацию и посмотреть примеры.


Название: Re: Событие меню из GUI
Отправлено: Evgen от Октябрь 07, 2012, 19:11
ОГРОМНОЕ спасибо за помощь!!!  Вопрос исчерпан