查看完整版本: [-- QT编写的自定义UI示例-自定义标题栏支持最小化最大化关闭双击鼠标拖动改变大小等 --]

QTCN开发网 -> Qt 作品展 -> QT编写的自定义UI示例-自定义标题栏支持最小化最大化关闭双击鼠标拖动改变大小等 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

liudianwu 2014-07-30 14:03

QT编写的自定义UI示例-自定义标题栏支持最小化最大化关闭双击鼠标拖动改变大小等

1:真正意义上的无边框自定义标题栏,支持最小化最大化关闭,支持标题栏双击实现,支持鼠标拖动,支持鼠标在边框处拖动改变窗体大小,网络上的绝大部分都是扯蛋,要么不支持鼠标改变界面大小,要么鼠标移到其它按钮界面瞬间移动等各种不理想状态。
2:无任何资源文件,纯QSS实现精美标题栏及自定义按钮样式,可以稍作修改增加更多的样式,QSS真是太强大了!
3:使用fontawesome-webfont.ttf字体文件实现最小化最大化关闭等按钮文字,图形文字,很好很强大!
4:提供16种各类曲线啥线的绘制,只需点击一下按钮即可切换观看效果!
5:主窗体界面与功能界面分离,注释两行代码即可。
6:代码最精简,可免费用于任何项目!
7:感谢网络上各种共享资源。
[attachment=12376]

[attachment=12377]

[attachment=12378]

[attachment=12379]

[attachment=12380]

CSDN下载地址:http://download.csdn.net/detail/feiyangqingyun/7694831

2014-7-31更新:
刚投标回来,80万的软件项目!一回来看到勇哥的回复,甚是高兴!在CSDN放了10分,确实太黑了!这次将完美版的放出。
稍微修正了一下,去除了与界面无关的东西,QT4-QT5.3之间任何版本均可编译通过!
将按钮获取焦点之后的虚边框去除,最大化不屏蔽任务栏,增加左上角ICO图标。
[attachment=12386]

[attachment=12387]

如果有人有更好的更改后的,请回帖,谢谢!
猛击这里下载![attachment=12388]

liudianwu 2014-07-30 14:10
部分QSS样式:
  1. #widget_main{
        border:1px solid rgb(100, 149, 237);    
    }

    #widget_title{
        background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(27, 137, 202, 255), stop:1 rgba(16, 119, 181, 255));
    }

    #lab_Title{
        font: 10pt "微软雅黑";
        color: rgb(255, 255, 255);
    }

    #widget_menu .QPushButton{
        color: rgb(183, 218, 238);
        background-color:rgba(0,0,0,0);
        border-style:none;
    }

    #widget_menu .QPushButton:hover{
        background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(25, 134, 199, 0), stop:1 rgba(72, 160, 212, 255));
    }

    #widget_menu #btnMenu_Close:hover{
        background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(238, 0, 0, 128), stop:1 rgba(238, 44, 44, 255));
    }

    #widget_main .QPushButton{
        border-style:none;
        border: 0px;
        font: 10pt "微软雅黑";
        color: rgb(255, 255, 255);
        padding: 4px;
        min-width: 45px;
        min-height: 25px;
    }

    #widget_main .QPushButton{
        background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(92, 172, 238, 255), stop:1 rgba(100, 149, 237, 255));
    }

    #widget_main .QPushButton:hover{
        background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(27, 137, 202, 255), stop:1 rgba(16, 119, 181, 255));
    }

    #widget_main .QPushButton:pressed{
        background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(92, 172, 238, 255), stop:1 rgba(100, 149, 237, 255));
    }

彩阳 2014-07-30 15:17
精准、熟练操作QSS,很强大!

feifeishu 2014-07-30 15:58
很好,很强大,有太多东西值得学习和参考了~

qibbs 2014-07-30 19:17
很厉害!!学习了!!

pain22 2014-07-31 08:49
大佬,你设了10个积分,谁下载得了啊

kimtaikee 2014-07-31 09:16
你可够黑心的,不在这里下载弄到CSDN赚积分。你可知道我在那边连3分的书都下不了吗?

kimtaikee 2014-07-31 09:55
这个QCustomPlot是比Qwt看着舒服些,可惜也是没有2D和3D饼图。
http://www.qcustomplot.com/index.php/download
[attachment=12385]

liudianwu 2014-07-31 11:42
不好意思让你破费了![图片]

liudianwu 2014-07-31 11:44
勇哥好!不好意思让你花了10分!我CSDN大学时候就有九千多分,下次不够可以找我哈!我更新了下源码,已在帖子中增加了更新说明!

qibbs 2014-07-31 12:48
我试了一下怎么会编译不通过呢?

goodname 2014-07-31 13:59
既然作者做的这么细致,我再提几条要求,看看能不能做个升级版。
(1)窗口左边图标上,鼠标左右键均可出菜单。
(2)标题栏右键菜单,菜单内容同(1)
(3)窗口右边图标上,增加ToolTips
(4)鼠标移动到窗口四个角上的变成斜线状的图标时,可以同时调整窗口长和宽,原生窗口变成斜线鼠标的直角区域比你的大一些,这样操作更方便些。
(5)简单看了下代码,重新实现了winEvent,这种方式是不是不能跨平台呢,我没实验过。

我很少发帖,一下子写了这么多,剩下的就看你的了。

liudianwu 2014-07-31 16:58
goodname:既然作者做的这么细致,我再提几条要求,看看能不能做个升级版。
(1)窗口左边图标上,鼠标左右键均可出菜单。
(2)标题栏右键菜单,菜单内容同(1)
(3)窗口右边图标上,增加ToolTips
(4)鼠标移动到窗口四个角上的变成斜线状的图标时,可以同时调整窗口长和宽,原生窗口变 .. (2014-07-31 13:59) 

嗯,很好,多谢提意见!

cnhemiya 2014-08-01 20:19
很好,很强大

liudianwu 2014-08-02 18:13
将这个自定义标题栏重新应用于报警监控系统中!
[attachment=12398]
[attachment=12399]
[attachment=12400]
[attachment=12401]
[attachment=12402]

liudianwu 2014-08-02 18:16
[attachment=12403]
[attachment=12404]

facturi 2014-08-04 10:01
将源码编译了一下,运行出错,是QList越界错误。

一去丶二三里 2014-08-05 16:09
1、尝试了一下,鼠标不能在边界上拖动
2、无资源图标造成图标显示不出来
3、下标越界QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0);
4、最大化拖动时候界面应该还原到最大化之前的状态

huangyuancao 2014-08-06 09:32
没研究透

自强不吸 2014-08-06 11:19

liudianwu 2014-08-07 08:54
奋斗ing孩子:1、尝试了一下,鼠标不能在边界上拖动
2、无资源图标造成图标显示不出来
3、下标越界QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0);
4、最大化拖动时候界面应该还原到最大化之前的状态
 (2014-08-05 16:09) 

使用的是fontawesome-webfont.ttf图形字体,无需图片资源,编译后将源码目录下的fontawesome-webfont.ttf拷贝到可执行文件目录即可!其实也可以将fontawesome-webfont.ttf封装到QT资源文件,这样的话就不需要拷贝过去了,也不会出现下标越界的情况!

shuijinliuxi 2014-11-16 10:45
QList越界错误是解压后的路径问题:
int fontId = QFontDatabase::addApplicationFont(qApp->applicationDirPath() + "/fontawesome-webfont.ttf");
必须确保ttf文件在该路径下,否则QList越界。

blueany 2015-08-13 17:40
拖动界面上任何一个非Button区域,窗口也跟着拖动了,修改了一下只能拖动标题栏。


if(e->button() == Qt::LeftButton)
改成
if(e->button() == Qt::LeftButton && e->y() <= ui->widget_title->height())

另外,初学Qt的我看不懂qss在哪里设置的。
非常感谢楼主的奉献精神。

crazy 2015-08-13 22:22
很好,支持!

苍井空 2015-08-18 13:42
为什么这个代码缺少文件?

苍井空 2015-08-18 13:43
代码缺少文件啊。

liudianwu 2015-08-18 16:56
苍井空:代码缺少文件啊。 (2015-08-18 13:43) 

请看这里:http://www.qtcn.org/bbs/read-htm-tid-59173.html

lmh5584258 2015-08-28 12:57
非常不错

qinlian2010 2019-12-14 18:26
大神太厉害了

mountainhigh 2021-02-09 01:28
厉害,学习了

weizhimubiao 2021-04-20 16:40
感谢刘大分享

yuan__xing 2022-03-22 16:12
楼主,请问缺少window.h 和windowsx.h文件如何解决呢?
环境:linux qt5.11


查看完整版本: [-- QT编写的自定义UI示例-自定义标题栏支持最小化最大化关闭双击鼠标拖动改变大小等 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled