我正在尝试创建一个继承自QWidget的自定义窗口小部件类 . 问题是,当我将Q_OBJECT宏添加到我的自定义类时,窗口小部件不会显示(没有错误) . 如果我删除宏运行qmake并再次运行项目,则会显示customwidget . 我习惯于添加Q_Object宏,因为我想添加信号和插槽 .

Widget.h:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>


class Widget : public QWidget
{
    Q_OBJECT

    public:
        Widget(QWidget *parent = 0);

};

#endif // WIDGET_H

Widget.cpp:

#include "Widget.h"

Widget::Widget(QWidget *parent) : QWidget(parent) { }

main.cpp中:

#include "Widget.h"

#include <QApplication>
#include <QWidget>
#include <QPoint>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget window_main;


    Widget *widget_steps = new Widget(&window_main);
    widget_steps->setFixedWidth(100);
    widget_steps->setFixedHeight(100);
    widget_steps->move(QPoint(0, 0));
    widget_steps->setStyleSheet("background-color: red");


    window_main.showMaximized();

    return a.exec();
}

如果没有Q_OBJECT宏,左上角会显示一个红色矩形,如果我添加宏,则不会显示 . 我使用的是Qt 5.1和Windows 7 .

我是Qt的新手,所以请保持简单的答案:)