Так как вы написали, все работает, а вот если для QLabel сделать отдельный класс, то опять не видно метку:
mainwindow.h:
#ifndef TOOL
#define TOOL
#include <QMainWindow>
#include <QHBoxLayout>
#include <QLabel>
class CMW : public QMainWindow
{
Q_OBJECT
public :
CMW (QWidget *parent=0);
};
#endif
klass.h:
#ifndef WIDGET
#define WIDGET
#include <QMainWindow>
#include <QLabel>
class Widget : public QLabel
{
Q_Object
public: Widget (QWidget *parent=0);
};
#endif
mainwindow.cpp:
#include "mainwindow.h"
#include "klass.h"
#include <QHBoxLayout>
#include <QLabel>
CMW::CMW (QWidget *parent)
: QMainWindow (parent)
{
Widget *label0 = new Widget;
setCentralWidget(label0);
}
klass.cpp:
#include "klass.h"
#include <QLabel>
#include <QtGuil>
Widget::Widget (QWidget *parent)
: QLabel (parent)
{
QLabel *label = new QLabel;
label->setText("text");
QHBoxLayout *lay = new QHBoxLayout;
lay->addWidget(label);
QWidget *wid = new QWidget;
wid->setLayout(lay);
}
main.cpp:
#include "mainwindow.h"
#include <QApplication>
#include <QHBoxLayout>
#include <QLabel>
#include <QtGui>
int main (int argc, char argv[])
{
QApplication a (argc, argv);
CMW w;
w.show;
return a.exec();
}