Russian Qt Forum

Qt => Общие вопросы => Тема начата: mishutka999 от Декабрь 13, 2010, 05:30



Название: Приложение в одном окне
Отправлено: mishutka999 от Декабрь 13, 2010, 05:30
Доброго времени суток. Я в QT новичек. У меня есть вопрос, с которым я мучаюсь уже не один час.
Мне нужно написать приложение, которое будет работать в одном окне, тоесть в окне сначала одна информация повляется (QLabel и QSpinBox), потом нажимаешь кнопочку "ок"/"далее" (эти кнопки я тоже создал) в то же окне  и появляется другая информация такого же типа. Пробовал создавая QWidget для "каждого окна". Но столкнулся с проблемой - у меня заполнение каждого окна идет в отдельных функциях,
Код:
class A : public QObject
{
Q_OBJECT
private:
 QWidget wgt1;
 QWidget wgt2;
public:
 void func1 ()
 {QHBoxLayout* lay = new  QHBoxLayout;
  ...
  wgt1.setLayout(lay);
  wgt1.show();}

void func2 ()
 {QHBoxLayout* lay2 = new  QHBoxLayout;
  ...
 wgt2.setLayout(lay2);
  wgt1.hide();
  wgt2.show();}

};
и когда я вызываю любую из этих функций второй раз, пишет
Код:
QWidget::setLayout: Attempting to set QLayout "" on QWidget "", which already has a layout

я понимаю, что это значит, но не понимаю как это обойти. Подскажите пожалуйста

+ как мне сделать чтобы у меня все виджеты распологались как бы в одном окне (а то когда происходит
Код:
wgt1.hide();
  wgt2.show();
окна скачут).

И можно ли удалить с QWidget все что я туда засунул (QHBoxLayout , QLabel и тд.)?


Название: Re: Приложение в одном окне
Отправлено: Fat-Zer от Декабрь 13, 2010, 05:54
почитайте про QStackedLayout именно он вам и нужен.

Да ещё, если делаете мастер, то почитайте про QWizard


Название: Re: Приложение в одном окне
Отправлено: deM1d от Декабрь 13, 2010, 18:47
Цитировать
И можно ли удалить с QWidget все что я туда засунул (QHBoxLayout , QLabel и тд.)?
все твои виджеты дочерние к layOut'у, ну в начале ты выделяешь память под layout, когда нужно удаляешь... все виджеты автоматически так-же выгрузяться... разве нет?