Добрый день.
Я только учу 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)