Да вот в том-то и дело, что... Через пэинт-евент и работаю
GalaxyWidget - как раз центральный. galaxyImage генерится еще в конструкторе класса GalaxyWidget.
C++ (Qt)
void GalaxyWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QBrush brush;
brush.setColor(Qt::black);
brush.setStyle(Qt::SolidPattern);
painter.fillRect(rect(), brush);
if(autoRefresh){
if(galaxyType == Elliptic) galaxyImage = drawEllipticGalaxy();
if(galaxyType == Mindal) galaxyImage = drawMindalGalaxy();
if(galaxyType == Spiral) galaxyImage = drawSpiralGalaxy();
}
int x = 0, y = 0;
if(galaxyImage.width() < width()) x = (width() - galaxyImage.width())/2;
if(galaxyImage.height() < height()) y = (height() - galaxyImage.height())/2;
painter.drawImage(x, y, galaxyImage);
}
Вот конструктор класса MainWidget:
C++ (Qt)
MainWindow::MainWindow()
{
galaxy = new GalaxyWidget();
createFileMenu();
createEditMenu();
createGalaxiesMenu();
createStatusBar();
createToolBar();
setMinimumSize(300, 200);
resize(640, 480);
setCentralWidget(galaxy);
setWindowTitle(tr("Galaxy model"));
setAttribute(Qt::WA_DeleteOnClose);
}
И все равно картинка galaxyImage при первом пэйнт-евенте (во время рисования окна, насколько я понимаю) считает, что ее размер == размер центрального виджета GalaxyWidget без тулбара... При последующих вызовах update() все в порядке...