Отображение двух окон в Qt4 - PullRequest
0 голосов
/ 10 ноября 2009

Каждый из нас и моего друга создали части GUI с использованием Qt 4. Они оба работают независимо, и я пытаюсь интегрировать его форму с моим главным окном. На данный момент это код, который я использую, чтобы попытаться загрузить его форму:

//connect buttons and such
connect(exitbtn, SIGNAL(triggered()),this,SLOT(terminated()));
connect(add, SIGNAL(triggered()),this,SLOT(add_rec()));

void MainWindowImpl::add_rec()
{
  //form quits as soon as it loads...?
  DialogImpl dia;//name of his form
  dia.show();
}

Я включил его заголовочный файл. Программа компилируется, но когда я нажимаю на курок, его форма загружается, может быть, на полсекунды, а затем закрывается. Кто-нибудь знает, что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 10 ноября 2009

У вас есть почти все правильно. Это потому, что RAII в C ++. Если вы выделите диалог в стеке, он будет разрушен, как только функция вернется.

2 голосов
/ 11 ноября 2009

Предполагая, что MainWindowImpl публично наследует от QWidget, вы ищете это:

void MainWindowImpl::add_rec() 
{
  // passing "this" to the constructor makes sure dialog will be cleaned up.
  // Note that DialogImpl will need a constructor that takes a
  // QObject* parent parameter.
  DialogImpl* dialog = new DialogImpl(this);

  dialog->show(); 
}

Посмотрите в документации Qt примеры того, как должны выглядеть конструкторы.

0 голосов
/ 10 ноября 2009

Очевидно, QT4 допускает только один экземпляр объекта за раз, однако указатели - это другое дело. Измените как main.cpp , так и вашего основного окна, чтобы оно выглядело примерно так:

DialogImpl *dia=new DialogImpl;
dia->show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...