Отображение второй формы в Qt - PullRequest
0 голосов
/ 03 февраля 2011

Я знаю, что этот вопрос задавался несколько раз, (/2940796/pokazat-formu-v-qt)

Я пытаюсь открыть существующую форму в моем проекте Qt C ++. Она должна быть подчиненной формой вместо поля QDialog.

обе формы имеют файлы .ui, .h и .cpp с ними.

в моем mwindowtest.cpp У меня есть

//this is used to handle the button click to open the new form
connect(btnConnect, SIGNAL(click()), this, SLOT(openNewWindow()));

для функции:

void mWindowTest::openNewWindow(){

   mForm = new dialog (this);
   mForm->show();

}

в моем mwindowtest.cpp у меня есть:

#include <dialog.h>  //second form
class dialog;

Я сейчас получаю сообщение об ошибке mForm не был объявлен в этой области, но я не уверен, что объявить mForm, как в моем файле заголовка.

любые советы будут с благодарностью.

Спасибо

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

В вашем примере у вас будет утечка памяти, поскольку при каждом нажатии кнопки btnConnect вы будете перераспределять память для вашей формы, не удаляя предыдущую первую.

Что касается вашей проблемы, нам нужно знать, как объявить диалог в dialog.h, чтобы действительно помочь вам. В вашем mywindowtest.cpp вы включили файл и переопределили класс. Попробуй поставить

class dialog

в вашем файле hpp и

#include <dialog.h>

в вашем файле cpp.

Надеюсь, это поможет

Изменить:

В вашем слоте:

delete mForm;
mForm = new dialog();
dialog->show();

Это минимум, чтобы избежать утечек памяти; И не забудьте удалить mForm в деструкторе MyWindowTest, если не ноль;

1 голос
/ 03 февраля 2011

В вашем mywindowtest.hpp вы должны сначала объявить указатель:

// mytestwindow.hpp
// ...
private:
    dialog* mForm;
// ...

// mytestwindow.cpp
void mWindowTest::openNewWindow()
{
    mForm = new dialog (this);
    form->show();
}

Или вы объявляете это прямо в вашем cpp, но тогда он не является членом и известен только в openNewWindow().

void mWindowTest::openNewWindow()
{
    dialog* form = new dialog (this);
    form->show();
}

Когда вы работаете с Qt, вы должны знать основы C ++. Этот пример является одним из таких основ. Используйте Google и прочитайте некоторые материалы о руководствах по указателям и динамическом распределении памяти.

Надеюсь, это поможет. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...