Использую QtCreator 1.3.0, Qt 4.5.1 Создаю проект "GUI приложение QT". В него добавляю класс С++ MyWidget - наследник QWidget. В коснтрукторе главной формы MainWindow создаю объект класса И делаю с ним следующее:
Код | MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this);
QWidget* w = new MyWidget(this); QPalette p = w->->palette(); p.setColor(QPalette::Background, QColor(Qt::red)); w->setPalette(p); w->resize(300, 500); w->move(10, 10); w->show(); }
|
Ожидается, что на форме появится красный прямоугольник. Но! Его нет! Почему??? Если MyWidget-у не передавать parent, то красный прямоугольник появляется, но, естественно, не на форме, а как отдельное окно. А вот чтобы работал приведённый пример, нужно в описании класса MyWidget убрать макрос Q_OBJECT. И всё работает. Но тогда же объекты этого класса не смогут отправлять/принимать сигналы. Что, вообще, происходит, почему оно так работает? |