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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [решено] Инициализация виджетов не указателем  (Прочитано 2470 раз)
ConConovaloff
Гость
« : Март 07, 2013, 03:59 »

Добрый день.

Я только учу C++, но думал, что между инициализацией объекта в виде переменной или указателя не имеет отличий.
На деле, у меня не получается работать с виджетами инициализированными переменной.

К примеру, в приложение ниже будет показана только кнопка с надписью Text2.
Неужели есть разница как инициализировать? Или я просто допустил ошибку?

main.cpp
Код:
#include <QApplication>
#include "testwindow.h"


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    TestWindow win;
    win.show();
    return a.exec();
}
testwindow.h
Код:
#ifndef TESTWINDOW_H
#define TESTWINDOW_H

#include <QWidget>

class TestWindow : public QWidget
{
    Q_OBJECT
public:
    explicit TestWindow(QWidget *parent = 0);
};

#endif // TESTWINDOW_H

testwindow.cpp
Код:
#include <QtGui>
#include "testwindow.h"
#include <typeinfo>

// для вывода
#define PRINT_NAME(x) qDebug() << #x << " - " << typeid(x).name() << " - " << x


TestWindow::TestWindow(QWidget *parent) :
    QWidget(parent)
{
    QHBoxLayout *mainLayout = new QHBoxLayout;
    QPushButton pushButtonExample("Text");
    QPushButton *pushButtonExample2 = new QPushButton("Text2");

    PRINT_NAME(&pushButtonExample);
    PRINT_NAME(pushButtonExample2);

    mainLayout->addWidget(&pushButtonExample);
    mainLayout->addWidget(pushButtonExample2);
    setLayout(mainLayout);
}

вывод
&pushButtonExample  -  P11QPushButton  -  QPushButton(0xbfc7d240)
pushButtonExample2  -  P11QPushButton  -  QPushButton(0x9a60b58)
« Последнее редактирование: Март 07, 2013, 05:26 от ConConovaloff » Записан
carrygun
Гость
« Ответ #1 : Март 07, 2013, 05:17 »

При выходе из конструктора кнопка, объявленная на стеке (та, что "Text"), будет уничтожена.
Записан
ConConovaloff
Гость
« Ответ #2 : Март 07, 2013, 05:26 »

При выходе из конструктора кнопка, объявленная на стеке (та, что "Text"), будет уничтожена.

Спасибо.
Извиняюсь, за невнимательность.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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