如何定义 QGridLayout 的间距处的颜色

void_main_void 2015-11-12 04:44:23
使用自定义界面需要伸缩窗口,使用了QGridLayout 来布局,
QGridLayout->setMargin(2);
QGridLayout->setSpacing(2);
QGridLayout->addLayou(控件排列layout, 1, 1, Qt::AlignJustify);
设置QGridLayout的间距为2,并且控件布局居中显示。 但是这里出现了个问题,QGridLayout的间距颜色是白色。这样很影响界面效果,但是如果设置间距为0 这样又无法对窗口进行边框伸缩。 有什么方法能设置QGridLayout的间距颜色吗?? 我尝试设置过背景颜色,但是QGridLayout的间距还是白色不会改变。。。
...全文
1403 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
void_main_void 2015-11-13
  • 打赏
  • 举报
回复
求帮助。。。
void_main_void 2015-11-13
  • 打赏
  • 举报
回复

void CMainFrame::paintEvent(QPaintEvent *e)
{
    int border = FRAME_BORDER;
    if (this->isMaximized()) {
        border = 0;
    }

    QPainter painter(this);
    QPainterPath painterPath;
    painterPath.setFillRule(Qt::WindingFill);
    painterPath.addRect(border, border, this->width() - 2 * border, this->height() - 2 * border);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.fillPath(painterPath, QBrush(Qt::white));
    
    //这里可以设置间距颜色。
    QColor color(39, 127, 210);
    for (int i = 0; i < border; i++) {
        color.setAlpha((i + 1) * 30); painter.setPen(color); painter.drawRect(border - i, border - i, this->width() - (border - i) * 2, this->height() - (border - i) * 2);
    }

    painter.setPen(Qt::NoPen);
    painter.setBrush(Qt::white);
    painter.drawRect(QRect(border, TITLE_HEIGHT, this->width() - 2 * border, this->height() - TITLE_HEIGHT - border));

    QWidget::paintEvent(e);
}
gfvera 2015-11-13
  • 打赏
  • 举报
回复
小号接分。。
void_main_void 2015-11-13
  • 打赏
  • 举报
回复
引用 2 楼 u013466477 的回复:
如果是widget->setLayout(QGridLayout); 那设置widget的背景色就好: setAutoFillBackground(true); setBackgroundRole(QPalette::Background); setPalette(QPalette(QColor(255, 255, 0))); 肯定是可以加上背景的,如果不行,那你就重载widget自己画吧或者把空隙用线来填,再布局。
问题已经解决了。我还是使用QGridLayout,设置间距为2. 然后控件居中。在重载paintEvent的时候绘制的边距,就能把QGridLayout的间距2给填充掉,最后在设置一下自己的主框架背景颜色就好。
冷静忍耐 2015-11-13
  • 打赏
  • 举报
回复
如果是widget->setLayout(QGridLayout); 那设置widget的背景色就好: setAutoFillBackground(true); setBackgroundRole(QPalette::Background); setPalette(QPalette(QColor(255, 255, 0))); 肯定是可以加上背景的,如果不行,那你就重载widget自己画吧或者把空隙用线来填,再布局。

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧