2010-12-14 3 views
2

Это должно быть очень просто.
Я использую Qt Creator и я сделал Qt Gui Application (Это было main.h, main.ui и main.cpp)Показать форму в Qt

Я только что создал Qt Designer Form Class, который также имеет заголовочный файл, пользовательский интерфейс и класс. Я сделал действие в моей main.cpp называется ShowSecondForm:

void Main::ShowSecondForm() 
{ 

} 

Everytime Я исполняю ShowSecondForm(); Я хочу, чтобы вторая форма будет отображаться.
Что я могу разместить внутри, чтобы моя форма открылась?
Кроме того, можно передать строку в форму при ее открытии? Мне нравится ShowSecondForm(const QString&)?

Некоторые замечания, которые могут помочь вам:

  • Я хотел бы иметь 2 формы открыты одновременно.
  • Он также будет классом, поскольку он будет вычислять разные вещи.

ответ

2

Если вы открываете одну форму от другой, вы можете захотеть сделать что-то вроде этого:

m_form = new MyForm (this); 
m_form->show(); 

Здесь вы сначала создать объект формы, а затем показать его. Примечание this передается в качестве родителя - при уничтожении родительской формы дети будут автоматически закрыты и уничтожены. Это также означает, что вам не нужно беспокоиться об очистке деструктора. Если вам нужно открыть несколько форм, вам понадобится объект для каждого из них.

m_form1 = new MyForm (this); 
m_form1->show(); 
m_form2 = new MyForm (this); 
m_form2->show(); 

Наконец, существует много способов передать строку форме. Это ваша форма, поэтому вы можете изменить ее конструктор, чтобы он принимал строку при создании, например m_form = new MyForm ("Some string", this); Или вы можете добавить свойство в свою форму. Иногда вы также можете использовать встроенную систему свойств QObject, посмотрите на функции QObject::setProperty() и QObject::property().

+0

Привет, Септаграмма! m_form = new MyForm (this); создаст новую форму. Я создал форму с помощью QtDesigner. Все, что я хочу, это показать форму, которую я создал. Форма называется form2.ui и имеет форму2.h и файл form2.cpp, поскольку это не просто форма, но и класс. – Sharethefun

+0

В дизайнере вы создали класс. Класс похож на план, который вы на самом деле используете. Но для его использования вам необходимо создать _объект_ этого класса. Взгляните на myform2.h и замените MyForm в моем примере на имя класса из формы2.h (я предполагаю, что это Form2). Затем будет создана и открыта форма, которую вы создали с дизайнером. – Septagram

0

Я подозреваю, this tutorial может быть полезно. Предположительно у вас есть main.ui, main.h и main.cpp.

Запустите программу uic над файлом main.ui, чтобы сгенерировать заголовок ui_main.h (если вы не используете qmake), но в противном случае базовая настройка находится в этом учебнике.

+0

Я думаю, что в примере используется только одна форма. Когда я создал свою вторую форму, qt автоматически создал все файлы, декларации и методы, необходимые. Я просто спрашиваю, как отобразить вторую форму, которую я создал с помощью действия. Проверьте ShowSecondForm(); Я хочу, чтобы каждый раз эта функция выполнялась, вторая форма для отображения. – Sharethefun

+0

Система ui просто прикрепляет макет и т. Д. К существующему QWidget, поэтому, если вы хотите чередовать их, подавайте каждый другой QWidget и показывайте/скрывайте их. – jkerian

Смежные вопросы