crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Как правильно вызвать новую форму
kharkov_max
  опции профиля:
сообщение 24.10.2011, 15:45
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 46
Регистрация: 5.5.2010
Пользователь №: 1693

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день.

Понимаю что вопрос уже достаточно расжеван, но до меня что то ни как не дойдет - помогите начинающему.

В Qtcreator создал чистый проэкт QmainWindow c формой mainwindow.ui, на форме положил кнопку.
Теперь по нажатию кнопки хочу вызвать новую форму, созданную в дизайнере - QDialog.
Создал новую форму (form) QDialog, как теперь правильно ее описать и открыть из основной формы.
В проэкте появился новый файл form.ui и все ...
Про этот файл Qtcreator добавил в файл проэкта *.pro записи SOURCES и FORMS.
Далее для меня темный лес ...

Смотрел пример addressbook но там формы создаются не в дизайнере и все описывается руками.

Уважаемые ГУРУ, не пошлите начинающего в документацию т.к. уже много перечитал и обгуглил.
Ясно что мой вопрос прост, но все же.

1. Нужно ли для новой формы создавать руками файлы *.h и *.cpp ?
2. Как это делают правильно настоящи джедаи ? (рассматриваю вариант создания формы через дизайнер - не вручную !!!)

Распишите пожалуйста по логическим шагам.

Заранее спасибо за понимание и помощь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 24.10.2011, 15:56
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Как то так:

Прикрепленные файлы
Прикрепленный файл  dialog_example.zip ( 3.01 килобайт ) Кол-во скачиваний: 367
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kharkov_max
  опции профиля:
сообщение 24.10.2011, 16:03
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 46
Регистрация: 5.5.2010
Пользователь №: 1693

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(RazrFalcon @ 24.10.2011, 15:56) *
Как то так:


Огромное спасибо за пример, буду разбираться.

Подскажите файлы .cpp и .h Вы руками создавали (изначально?, то что их потом нужно править я понимаю )) ), или при каких-то настройках QtCreator он создает их сам ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 24.10.2011, 16:16
Сообщение #4


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


ПКМ по папке с именем проекта (в дереве проекта) - Добавить новые... - Qt - Qt Desiner Form Class (у меня так)
Далее все интуитивно.
Потом хедер(.h) диалога добавляем в сорус(.cpp) главного окна и вызываем его как я писал в примере.

PS: можно и просто dialog.exec(); , но я думаю вам нужно именно что-то получить из него, по этому добавил в пример QLineEdit
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kharkov_max
  опции профиля:
сообщение 24.10.2011, 16:41
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 46
Регистрация: 5.5.2010
Пользователь №: 1693

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(RazrFalcon @ 24.10.2011, 16:16) *
ПКМ по папке с именем проекта (в дереве проекта) - Добавить новые... - Qt - Qt Desiner Form Class (у меня так)
Далее все интуитивно.
Потом хедер(.h) диалога добавляем в сорус(.cpp) главного окна и вызываем его как я писал в примере.

PS: можно и просто dialog.exec(); , но я думаю вам нужно именно что-то получить из него, по этому добавил в пример QLineEdit


Что так можно делать я догадывался.

Просто изначально было предроложение что QTCreator будет создавать файлы для формы автоматически, с каким нить минимальным кодом.
А так, как я понимаю, нужно создать отдельно форму, а потом отдельно .cpp и .h правильно подключив их к первому файлу проэкта.
Получается что кроме как изменение файла проэкта *.pro, такой метод ни чем не лучше чем просто подключать уже готовые файлы .cpp и .h.

Думал что я что то не правилньно делаю или настройки Qtcreator какие-то не верно указал, ведь главная форма при создании проэкта нормально создается, а вот с дополнительными получается такая вот ситуация.

Ладно, буду учить дальше.
Огромное спасибо за помощь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 24.10.2011, 16:47
Сообщение #6


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Для наглядности:




Сообщение отредактировал RazrFalcon - 24.10.2011, 16:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kharkov_max
  опции профиля:
сообщение 25.10.2011, 17:58
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 46
Регистрация: 5.5.2010
Пользователь №: 1693

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(RazrFalcon @ 24.10.2011, 16:47) *
Для наглядности:




С созданием новой формы уже разобрался, все оказалось проще некуда.

Следующий вопрос похожего характера.

А как к проэкту подключить форму которая была создана через Qtcreator не как "Класс формы Qt Designer", а как "Форма Qt Designer"
Дело в том что у меня уже есть форма на которую вынесено куча виджитов и т.д.
Не хочется ее заново пересоздавать и переделывать, ну и ради познания хочу подключить ее к проэкту.

Я прибегнул к хитрости.
Начал создавать "Класс формы Qt Designer" а как файл формы указал имя своего файла, QtСreator справшивает что такой файл уже существует "перезаписать?" - я отказываюсь и ...
Вроде как в проэкте появляются файлы .h и .cpp но проэкт не компилится ...
Видимо нехватает каких то связей формы и класса.
Новая форма создана как Qwidget.

Подскажите как правильно добавить новую уже созданную форму в проэкт.
К примеру форму создал 3й человек на 3м ПК.

Спасибо.

Сообщение отредактировал kharkov_max - 25.10.2011, 18:05
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 25.10.2011, 18:29
Сообщение #8


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Можно вот так хитро:
#include "ui_form.h"

MainWindow::MainWindow(QWidget *parent) :
  QMainWindow(parent)
{
  setupUi(this);

  Ui::Form formUi;
  QWidget *centralWidget = new QWidget(this);
  formUi.setupUi(centralWidget);
}

Где ui_form.h, а точнее form - это имя нашей формы-виджета (QWidget).
То есть: для myform.ui - надо писать ui_myform.h
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
_Vitaliy_
  опции профиля:
сообщение 25.10.2011, 18:47
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 59
Регистрация: 20.11.2008
Пользователь №: 428

Спасибо сказали: 3 раз(а)




Репутация:   0  


Для топикстартера.
Есть неплохая подборка видеоуроков по Qt, а именно: VoidRealms, не пожалейте потраченного времени и трафика на скачивание, пока уроков 98 но "разжевано" как для: совсем новичка, пользуйтесь...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 25.10.2011, 20:18
Сообщение #10


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Видео-уроки хорошо, но маны лучше.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 10:28