QtWidget禁用覆盖小部件的边距

时间:2015-06-11 19:01:20

标签: c++ qt c++14 qwidget

我的情况:我的网格布局里面有n * n个小部件。另外,我将叠加小部件放在网格中,位置为0,0,跨度为n,n。

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 ) );
}

1 个答案:

答案 0 :(得分:0)

我的paint-Routine for SudokuFieldWidget出现错误导致了这种不当行为...... m_markerOverlay->setGeometry( this->geometry() );