阅读网 购物 网址 万年历 小说 | 三丰软件 天天财富 小游戏
TxT小说阅读器
↓小说语音阅读,小说下载↓
一键清除系统垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放,产品展示↓
佛经: 故事 佛经 佛经精华 心经 金刚经 楞伽经 南怀瑾 星云法师 弘一大师 名人学佛 佛教知识 标签
名著: 古典 现代 影视名著 外国 儿童 武侠 传记 励志 诗词 故事 杂谈 道德经讲解 词句大全 词句标签 哲理句子
网络: 舞文弄墨 恐怖推理 感情生活 潇湘溪苑 瓶邪 原创 小说 故事 鬼故事 微小说 耽美 师生 内向 易经 后宫 鼠猫 美文
教育信息 历史人文 明星艺术 人物音乐 影视娱乐 游戏动漫 | 穿越 校园 武侠 言情 玄幻 经典语录 三国演义 西游记 红楼梦 水浒传
 
  阅读网 -> 明星艺术 -> Qt如何制作漂亮的界面? -> 正文阅读

[明星艺术]Qt如何制作漂亮的界面?

[收藏本文] 【下载本文】
最近在使用Qt做界面,需要根据设计给的效果图做,但是一些界面,设计用ps画的简单,真正用Qt去实现却很无力。 之前用的最多的就是使用控件的setSty…
刚写 Qt 的时候,还真不知道怎么绘制出漂亮的界面,那时候读研,也只要求能实现功能就行,后来工作后写 Qt 才开始照着UI给的图画按钮,画控件,当时还觉得蛮有意思的。总结下写 Qt 以来画界面用到的一些方法。
styleSheet
如果对控件做一些简单的修饰,可以选用 setStyleSheet 接口,设置包括背景色、字体、边框等简单的样式。



QWidget *widget = new QWidget;
// 使用 setStyleSheet 设置背景色为红色
widget->setStyleSheet("QWidget { background-color: red; }");
// 如果你想要设置特定类型的控件的背景色,比如 QPushButton  
QPushButton *button = new QPushButton("My Button", widget);
button->setStyleSheet("QPushButton { background-color: blue; }");

对于复杂的样式不建议使用 styleSheet 实现,这个一直没找到的官方最全的文档,一般简单使用到网上搜索一下,而且这种形式可调试性很,绘制出来有问题很难解决。
paintEvent


Qt 跨平台的 raster 引擎绘制就是先绘制一张图,然后丢给系统,把图绘制到窗口上,因为是在一张图上进行绘制,定义好图的像素格式就能直接跨平台。paintEvent 就是 Qt 留给我们在图上面绘制内容的接口。绝大多数复杂一点的控件都会使用 paintEvent 进行绘制。

class CircleWidget : public QWidget {  
protected:  
    void paintEvent(QPaintEvent *event) override {  
        QPainter painter(this);  
        painter.setRenderHint(QPainter::Antialiasing, true); // 抗锯齿  
  
        // 设置画笔颜色  
        painter.setBrush(QBrush(Qt::blue)); // 设置填充颜色为蓝色  
        painter.setPen(QPen(Qt::black, 2)); // 设置线条颜色为黑色,线宽为2  
  
        // 绘制一个圆,中心位于窗口中心,半径为窗口宽度的一半减去一些边距  
        int radius = width() / 2 - 10;  
        painter.drawEllipse(QPoint(width() / 2, height() / 2), radius, radius);  
    }  
};  

上面利用 Qt 提供的 QPainter 绘制体系绘制了一个圆。如果想要成为一名合格的画图仔,学好 QPainter 相关的绘制体系十分重要。如果是初学者想看看 paintEvent 如何画界面,可以看看这个或这个小项目(大佬直接忽略),没有任何技术含量,代码写的也不行,仅仅是通过 paintEvent 画了一个类似 360 的界面和音乐播放器界面,只能说看看 paintEvent 如何画界面。
QPropertyAnimation


如果还想让界面动起来,那就需要用一用 QPropertyAnimation 属性动画,其实也可以自己通过 QTimer + paintEvent 实现,不过属性动画中有一些描述变化曲率的函数还是比较好用的。上面提到的两个小项目中都有动态元素也是用到了属性动画。

int main(int argc, char *argv[])  
{  
    QApplication app(argc, argv);  
  
    // 创建一个QWidget实例  
    QWidget *widget = new QWidget;  
    widget->resize(100, 100); // 设置尺寸  
    widget->setStyleSheet("background-color: red;"); // 设置背景色为红色  
  
    // 创建QPropertyAnimation实例  
    QPropertyAnimation *animation = new QPropertyAnimation(widget, "pos");  
    animation->setDuration(1000); // 设置动画持续时间为1000毫秒  
  
    // 设置动画的起始位置和结束位置  
    animation->setStartValue(widget->pos()); // 当前位置作为起始位置  
    animation->setEndValue(QPoint(widget->x() + 200, widget->y())); // 水平向右平移200像素  
  
    // 开始动画  
    animation->start();  
  
    // 显示窗口  
    widget->show();  
  
    return app.exec();  
}  

QOpenGLWidget


如果需要更加炫酷的动画效果又不想忍受 Qt 属性动画不太好的性能,那可能需要通过 3D 渲染的方式来实现了,具体可以参考下面文章。通过 QOpenGLWidget 自定义 3D 绘制内容,通过 Shader 可以实现很多炫酷的效果,由于是通过 GPU 绘制,绘制性能要比属性动画好很多。当然这样开发效率自然是不如属性动画的。
QStyle
如果需要统一整体界面风格,支持皮肤切换,就需要研究下 QStyle。把用到的基础控件都自定义绘制一遍,相当于整个界面完全自定义,工作量也不小>-<。


自己在工作中最经常用的还是 paintEvent,画图仔的必备技能,吐槽下界面复杂以后,出一点显示上的小 Bug,由于界面没有功能那种强逻辑可以进行推理,改起来还是有难度的。画图仔也不好当>-<。
送礼物
还没有人送礼物,鼓励一下作者吧
如果你使用 Qt Quick (QML),可以使用 Qt Bridge 导出 Figma 或者 PS 里的界面设计,在 Qt Design Studio 里面直接生成 QML 代码。Qt Bridge 需要商用 License。如果没有的话,也可以直接用 QML 写。






来一个打Qter们脸的(当然肯定也打我脸)。
我媳妇儿不是干C++的,自学两个月后,拿QtWidgets写的。


01:25
首先拉一个qtwebengine
然后用前端技术栈做UI,问题解决
把qt当cpp版electron用就完事了
ea就是这么干的
送礼物
还没有人送礼物,鼓励一下作者吧
把Qt的所有标准控件给设计看, 告诉他不要做这些控件之外的控件效果. 要做也是控件之间的组合, 不要整出来什么奇奇怪怪的控件, 那个做不了的.
2. StyleSheet, QSS就是CSS. 没啥好学的. 打开Qt的Assistant, 搜索stylesheet


把这个页面和红框标出来的看一遍就行了.
[收藏本文] 【下载本文】
   明星艺术 最新文章
西安华清池摆放杨贵妃裸体雕像是否合理?
有哪些令人叹为观止的细节?
Qt如何制作漂亮的界面?
你最喜欢的左翼政党logo是什么?
如何评价赵本山小品《红高粱模特队》?
你见过最抽象的城市道路设计是什么样子的?
为什么陈丹青说我国美术学院的那些素描是死
赵本山的徒弟比郭德纲的徒弟忠诚度要高吗?
为什么格斗界没人打假疯狗拳陈鹤皋?
《水浒传》中最被低估的好汉是哪一个?
上一篇文章      下一篇文章      查看所有文章
加:2026-01-17 14:07:57  更:2026-01-17 14:10:13 
 
古典名著 名著精选 外国名著 儿童童话 武侠小说 名人传记 学习励志 诗词散文 经典故事 其它杂谈
小说文学 恐怖推理 感情生活 瓶邪 原创小说 小说 故事 鬼故事 微小说 文学 耽美 师生 内向 成功 潇湘溪苑
旧巷笙歌 花千骨 剑来 万相之王 深空彼岸 浅浅寂寞 yy小说吧 穿越小说 校园小说 武侠小说 言情小说 玄幻小说 经典语录 三国演义 西游记 红楼梦 水浒传 古诗 易经 后宫 鼠猫 美文 坏蛋 对联 读后感 文字吧 武动乾坤 遮天 凡人修仙传 吞噬星空 盗墓笔记 斗破苍穹 绝世唐门 龙王传说 诛仙 庶女有毒 哈利波特 雪中悍刀行 知否知否应是绿肥红瘦 极品家丁 龙族 玄界之门 莽荒纪 全职高手 心理罪 校花的贴身高手 美人为馅 三体 我欲封天 少年王
旧巷笙歌 花千骨 剑来 万相之王 深空彼岸 天阿降临 重生唐三 最强狂兵 邻家天使大人把我变成废人这事 顶级弃少 大奉打更人 剑道第一仙 一剑独尊 剑仙在此 渡劫之王 第九特区 不败战神 星门 圣墟

  网站联系: qq:121756557 email:121756557@qq.com