QT绘制窗体背景汇总

1.绘制窗体背景

protected:
    void paintEvent(QPaintEvent *event) override;
void D1CodeBtnGroup::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    QPixmap pixmap(":/backgroud1.png");
    painter.drawPixmap(this->rect(),pixmap);
}

2.设置按钮字体颜色

	QPalette   pal;
    pal.setColor(QPalette::ButtonText, QColor(0,0,0));
    m_pBtns[i]->setPalette(pal);

3.设置Label字体颜色

	QPalette   pal;
    pal.setColor(QPalette::Labelext, QColor(0,0,0));
    m_pLabels[i]->setPalette(pal);
	//设置字体,加粗常见权重
    QFont font ("Microsoft YaHei", 12, 75);
    m_titleLabel->setFont(font);
    m_titleLabel->setStyleSheet("color:white");//文本颜色
    //QFont::Light - 25 高亮
	//QFont::Normal - 50 正常
	//QFont::DemiBold - 63 半粗体
	//QFont::Bold - 75 粗体
	//QFont::Black - 87 黑体

4.设置按钮透明及悬浮效果

	m_pBtns[i]->setIcon(QPixmap(":/circleBtn.png"));
    m_pBtns[i]->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
    //m_pBtns[i]->setStyleSheet("background-color:rgba(0,0,0,0)");
    m_pBtns[i]->setStyleSheet("QToolButton{background-color:transparent}"
                              "QToolButton:hover{background-color:rgba(0,197,205,100)}"
                              "QToolButton:pressed{background-color:rgba(0,134,139,100)}");
    m_pBtns[i]->setPalette(pal);
    m_pBtns[i]->setFixedWidth(100);
    m_pBtns[i]->setAutoRaise(true);
    m_pBtns[i]->setText(strList.at(i));
    m_pGridLayout->addWidget(m_pBtns[i], 0, i);

6.设置QLabel作为高亮显示

	//QLabel, 先设置过滤鼠标事件
	m_pCurrentSub->setAttribute(Qt::WA_TransparentForMouseEvents,true);
    m_pCurrentMenu->setAttribute(Qt::WA_TransparentForMouseEvents,true);

	//QLabel设置父窗体
	m_pCurrentSub = new QLabel(m_widgetSubMenu);
    m_pCurrentMenu = new QLabel(this);

	//QLabel设置半透明底色
	m_pCurrentSub->setStyleSheet("QLabel{background-color:rgba(32,78,170,100)}");
    m_pCurrentMenu->setStyleSheet("QLabel{background-color:rgba(0,134,139,100)}");

	//点击按钮,QLabel高亮在按钮下高亮显示
	//注意,Pos获取的是控件在父窗口的位置,需要指定合适的 父窗口
	connect(btn, &QToolButton::clicked, [=]()
    {
        m_pCurrentSub->setGeometry(btn->pos().x(), btn->pos().y(), btn->width(), btn->height());
        m_pCurrentSub->setVisible(true);
        emit this->sglSubChanged(index);
    });
	

7.实现点击按钮的收缩展示

connect(m_btnMenu, &QToolButton::clicked, [=]()
    {
        m_pCurrentMenu->setGeometry(m_btnMenu->pos().x(), m_btnMenu->pos().y(), m_btnMenu->width(), m_btnMenu->height());
        emit sglMenuChanged(m_id);
        if (m_list % 2)
        {
            m_btnMenu->setIcon(style()->standardIcon(QStyle::SP_ToolBarHorizontalExtensionButton));
            m_widgetSubMenu->setVisible(false);
            m_pCurrentMenu->setVisible(false);
        }
        else
        {
            m_btnMenu->setIcon(style()->standardIcon(QStyle::SP_ToolBarVerticalExtensionButton));
            m_widgetSubMenu->setVisible(true);
            m_pCurrentMenu->setVisible(true);
        }
        m_list++;
    });

8.切换菜单,更新高亮显示

//切换菜单
    connect(pWidget->m_btnMenu, &QToolButton::clicked, [=]()
    {
        m_pBtnToolBox->m_previousBtn = m_pBtnToolBox->m_currentBtn;
        m_pBtnToolBox->m_currentBtn = pWidget;
        if((m_pBtnToolBox->m_previousBtn != nullptr) && (m_pBtnToolBox->m_previousBtn != m_pBtnToolBox->m_currentBtn))
        {
            m_pBtnToolBox->m_previousBtn->m_pCurrentMenu->setVisible(false);
            m_pBtnToolBox->m_previousBtn->m_pCurrentSub->setVisible(false);
        }
        this->m_pMenuStack->setCurrentIndex(iIndex);
        this->m_pMenuStack->start(iIndex);
        this->m_pMenuStack->setCurrentIndex(iIndex);
    });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值