для
eldar85myPage::myPage()
{
pushButton = new QPushButton;
textEdit = new QTextEdit;
groupBox = new QGroupBox;
layoutV = new QVBoxLayout;
layoutV->addWidget(textEdit);
layoutV->addWidget(pushButton);
groupBox->setLayout(layoutV);
}
не забудь давать перентов элементам через new:
myPage::myPage()
{
pushButton = new QPushButton(this);
textEdit = new QTextEdit(this);
groupBox = new QGroupBox(this);
layoutV = new QVBoxLayout(this);
layoutV->addWidget(textEdit);
layoutV->addWidget(pushButton);
groupBox->setLayout(layoutV);
}
чтоб память руками не чистить в деструкторе, а то если и в деструкторе забудешь, то твоя прога будет беспощадно жрать память у очень общительных людей =)
Алексей1153 дело говорит:
myPage::myPage() унаследуй от QWidget, а не закладку добавляй свой класс.
Динамически это самое интересное
пример класса, который добавляется динамически:
class TAdditionalRouteWidget : public QWidget
{
Q_OBJECT
public:
TAdditionalRouteWidget(QWidget *parent = 0);
~TAdditionalRouteWidget();
...
...
signals:
void deleteClick();
void switchClick();
void changedRoute();
private:
QHBoxLayout *FLayout;
QTextEdit *teAdditionalRoutes;
QPushButton *btnDelRoute;
QPushButton *btnSwitchRoute;
private slots:
void slt_deleteClick();
void slt_switchClick();
void slt_changedRoute();
};
TAdditionalRouteWidget::TAdditionalRouteWidget(QWidget *parent)
: QWidget(parent)
{
FLayout = new QHBoxLayout(this);
FLayout->setContentsMargins(0, 0, 0, 0);
teAdditionalRoutes = new QTextEdit(this);
btnDelRoute = new QPushButton(this);
btnDelRoute->setStatusTip(tr("Удалить маршрут"));
btnDelRoute->setIcon(QIcon(":/Resources/Recycle.png"));
btnDelRoute->setIconSize(QSize(32, 32));
btnSwitchRoute = new QPushButton(this);
btnSwitchRoute->setStatusTip(tr("Сделать главным"));
btnSwitchRoute->setIcon(QIcon(":/Resources/Switch.png"));
btnSwitchRoute->setIconSize(QSize(32, 32));
FLayout->addWidget(teAdditionalRoutes);
FLayout->addWidget(btnSwitchRoute);
FLayout->addWidget(btnDelRoute);
FLayout->addStretch();
teAdditionalRoutes->setFixedHeight(50);
QObject::connect(btnDelRoute, SIGNAL(clicked()), this, SLOT(slt_deleteClick()));
QObject::connect(btnSwitchRoute, SIGNAL(clicked()), this, SLOT(slt_switchClick()));
QObject::connect(teAdditionalRoutes, SIGNAL(textChanged()), this, SLOT(slt_changedRoute()));
setLayout(FLayout);
}
Пример динамического добавления и удаления класса:
процедура добавления нового виджета маршрута
{
TAdditionalRouteWidget *ar = new TAdditionalRouteWidget(this);
FRoutesLayout->insertWidget(FAdditionalRoutes.size(), ar);
FAdditionalRoutes.push_back(ar);
QObject::connect(ar, SIGNAL(deleteClick()), this, SLOT(slt_DelRoute()));
QObject::connect(ar, SIGNAL(switchClick()), this, SLOT(slt_SwitchRoute()));
QObject::connect(ar, SIGNAL(changedRoute()), this, SLOT(slt_ChangedRoute()));
}
процедура удаления виджета
slt_DelRoute()
{
TAdditionalRouteWidget *ar = dynamic_cast<TAdditionalRouteWidget *>(sender());
int idx = FAdditionalRoutes.indexOf(ar);
if (idx != -1)
{
ar = FAdditionalRoutes.takeAt(idx);
FRoutesLayout->removeWidget(ar);
delete ar;
}
}
в общем случае примерно так. Может топорно? профи критикуйте пожалуйста