2015-06-11 18 views
0

我的情况:我有一个网格布局,里面有n * n个小部件。另外,我在网格中放置一个覆盖小部件,位置为0,0,跨度为n,n。QtWidget为覆盖小部件禁用边距

Evertyhing罚款这一点,但有一个奇怪的保证金,我不知道是什么原因呢?

有没有人一个想法如何,我可以防止这种情况?我想我失去了一些东西小事......

enter image description here

SudokuFieldWidget::SudokuFieldWidget(QWidget *parent) : QFrame(parent) 
{ 
    ... 
    m_layout = new QGridLayout(this); 
    m_layout->setSpacing(0); 
    m_layout->setMargin(1); 
    this->initCells(true); 
    this->setLayout(m_layout); 

    m_markerOverlay = new SudokuMarkerOverlayWidget(this); 
    m_layout->addWidget(m_markerOverlay, 0, 0, m_fieldSize, m_fieldSize); 
} 


SudokuMarkerOverlayWidget::SudokuMarkerOverlayWidget(QWidget* parent) : QWidget(parent) 
{ 
    setAttribute(Qt::WA_NoSystemBackground); 
    setAttribute(Qt::WA_TransparentForMouseEvents); 
    ... 
} 

void SudokuMarkerOverlayWidget::paintEvent(QPaintEvent*) 
{ 
    QPainter painter(this); 
    painter.fillRect(rect(), QColor(255, 0, 0, 128)); 
} 

回答

0

在我的油漆例程SudokuFieldWidget的错误,导致这一错误行为... m_markerOverlay->setGeometry(this->geometry());