Russian Qt Forum
Сентябрь 27, 2024, 20:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Динамическое создание QWidget  (Прочитано 4717 раз)
arty_57
Гость
« : Апрель 05, 2011, 18:16 »

Суть проблемы. Есть класс Widget.
Код:
class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    AboutWidget *aboutPWidget;

private:
    Ui::Widget *ui;
При нажатии на кнопку его, должен создаваться aboutPWidget. сам объект создается нормально вроде, а вот вызов метода show вызывает ошибку сегментации памяти. класс AboutWidget унаследован от QWidget
Код:
AboutWidget::AboutWidget(QWidget *parent) :
    QWidget(parent)

{
    statusLabel = new QLabel(tr("This is a test of this widget"));
     testButton = new QPushButton("test");
     buttonBox = new QDialogButtonBox;
     buttonBox->addButton(testButton, QDialogButtonBox::ActionRole);
     QHBoxLayout *topLayout = new QHBoxLayout;
       topLayout->addWidget(statusLabel);
       topLayout->addWidget(buttonBox);
       setLayout(topLayout);

}
вот код создания
Код:
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{

    ui->setupUi(this);

    connect(ui->AboutProgrammButton,SIGNAL(clicked()),this,SLOT(About()));
    AboutWidget *aboutPWidget=new AboutWidget();
   

}
вот код где происходит ошибка
Код:
void Widget::About(){   
   aboutPWidget->show();
}
Причем если вызвать метод show в конструкторе Widget, то срабатывает нормально.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Апрель 05, 2011, 18:25 »

Код
C++ (Qt)
Widget::Widget(QWidget *parent) :
   QWidget(parent),
   ui(new Ui::Widget)
{
 
   ui->setupUi(this);
 
   connect(ui->AboutProgrammButton,SIGNAL(clicked()),this,SLOT(About()));
   aboutPWidget=new AboutWidget();
 
 
}
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
arty_57
Гость
« Ответ #2 : Апрель 05, 2011, 18:41 »

Блиииин.....а ведь всё так просто....стыд мне и позор...спасибо огромное
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.168 секунд. Запросов: 22.