QT自定义标题框以及设计窗口四周圆角

基本思路:创建一个widget,加入QLabel控件和QPushBtton控件即可。

1.创建自定义标题框类titleWidget类,在UI设计师界面拖拽出以下图形

2.实现窗口关闭

connect(ui.btnClose,SIGNAL(clicked()),this,SLOT(windowClose()));
void className::windowClose(){
	QWidget *pWindow=this->window();
	pWindow->close();
}

3.设置相关样式,尤其是四周圆角

setStyleSheet("border-radius:8px;");

4.自定义标题框完成后就开始使用了,在别的窗口中创建一个widget然后提升。

5.设置界面无边框setWindowFlags(Qt::FramelessWindowHint);

6.设置窗体透明,方便将实际内容显示出来,否则窗体还是矩形,四角为空白。setAttribute(Qt::WA_TranslucentBackground);

注意:1.此时窗体内部绝对会有透明的区域,和控件的白色很不搭。因此这时需要设置整个窗体样式即背景色为白色:setStyleSheet("background-color:white");2.如果在设计中需要设置按钮覆盖色即hover,那么千万不要图快在UI界面设计师中设计整个窗体为白色,否则在代码中写hover的时候覆盖色将会无效。笔者在写时为了图快,结果半天都没发现问题所在。

7.设计窗体鼠标事件。

// 鼠标相对于窗体的位置 event->globalPos() - this->pos()
void Widget::mousePressEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton)
    {
        m_bPressed = true;
        m_point = event->pos();
    }
}
 
// 若鼠标左键被按下,移动窗体位置
void Widget::mouseMoveEvent(QMouseEvent *event)
{
    if (m_bPressed)
        move(event->pos() - m_point + pos());
}
 
// 设置鼠标未被按下
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
    Q_UNUSED(event);
 
    m_bPressed = false;
}

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值