用Qt实现一个桌面弹幕程序(五)-- -- 桌面客户端实现①

本文介绍了如何使用Qt通过代码实现一个桌面弹幕程序,包括自定义标题栏的创建、窗口拖动功能的实现以及按钮美化。通过自定义标题栏,可以保持界面一致性,并在不同平台上保持风格统一。文章详细讲解了实现过程和代码示例。
摘要由CSDN通过智能技术生成

光实现弹幕还不够哦~桌面客户端也要做好看点才比较好用~

接下来就跟随 杰洛君 一起实现一个QMainwindow 程序吧~

拖控件与代码实现之间的比较

QMainWindow程序界面的编写在Qt中主要有三种方式:

  • 1.拖动控件
  • 2.代码实现
  • 3.以上二者混合

拖动控件进行界面编写

双击项目中的 mainwindow.ui 就会打开设计模块,左边看到的Layouts,Button等就是控件,你可以拖动进中间的窗体。

右边有一颗控件树,由此我们可以知道,控件以树状结构进行管理。

以上就是拖控件来进行界面编写啦~

控件都在UI 命名空间中,所以你可以看到我们Mainwindow的实现代码总有这么一句 ui->setupUi(this); 访问控件都是用ui进行访问。

不过呢,杰洛君的这个应用还是非常传统地用代码实现了,没有用到控件,主要是杰洛君比较笨,没有学会用好这个设计软件TAT
(p.s. 为了都试着用代码写,所以mainwidnow.ui中的菜单栏,状态栏我全都右键删除了~)

这两种方法各有优势,没有孰优孰劣之说,总之你喜欢就好~

那么,接下来。。。

桌面程序

具体的就以这个为示例,说下如何做一个这样子的程序。

先来一段分析

上面图中的界面如何实现?

观察可以知道,这个应用有很明显分为三个部分:

  • 标题栏(黑色部分)
  • 图片栏(蓝色部分)
  • 控制台(白色部分)

我们简化它 , 发现它的结构如下图般简单~

这里写图片描述

那就开始一部分一部分地实现吧~

首先是标题栏~

你可以看到杰洛君并没有采用系统的标题栏,所以你在不同系统中看到的标题栏效果是一致的。

小思考
提问:自定义标题栏的优点和缺点各有那些呢?

回答:
自定义标题栏优点:
1. 可以让界面画风一致,因为有时你的程序风格与系统原生界面是不一致的,自定义标题栏比较好看,防止画风突变(^__^)~
2.不同平台下标题栏风格是一致的~

自定义标题栏缺点:
1.放弃了系统原生的标题栏意味着,放弃了系统原生实现好的那些拖放功能,最大化最小化,拉伸的功能等。也就是说这些功能都是需要自己实现的。

既然放弃了很多系统原生功能,为了简化,那就那把应用的大小设置为固定的吧~这样可以专注学习布局,不用去实现拉伸,大大降低难度~

实现一个自定义标题栏吧

就如上面所说的,先固定窗体大小,剩下的就好办了。

设置窗体固定大小很简单 在mainwindow的构造函数中

this->setFixedSize(900,600);

固定为宽为900,高为600的一个窗体。

然后杰洛君创建一个新的类,TitleWidget 它集成自QWidget,并且重载它的paintEvent 函数。

把这个类作为我们的标题栏~

于是它至少应该是这个样子:

class TitleWidget : public QWidget
{
    Q_OBJECT
public:
    explicit TitleWidget(QWidget *parent = 0);

signals:

public slots:

protected:
    void paintEvent(QPaintEvent *);

};

为了让窗体的背景有一个渐变的效果,这里我们重载paintEvent

void TitleWidget::paintEvent(QPaintEvent *){
    // 设置画笔
    QPen objPen(Qt::NoBrush,1);
    QPainter Painter(this);
    Painter.setPen(objPen);
    //设置渐变画刷
    QLinearGra
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值