当前位置:首页 > 实用技巧 >

html中main标签怎么设置样式(html中设置标题标签的方法)

来源:原点资讯(www.yd166.com)时间:2023-10-28 17:32:13作者:YD166手机阅读>>

一直梦寐以求能像VC一样可以很方便的有个自定义的界面,QSS的强大让我看到了很好的希望,辗转百度谷歌无数次,一直搜索QT相关的换肤文章,绝大部分的是一些简单的按钮文本样式,要做到整体换肤程度几乎不行,QTCN论坛里的奋斗的孩子写了个模仿360安全卫士系列,让我既惊喜有遗憾,惊喜的是能够用QT实现一个这么完整的360安全卫士界面,确实不错,也支持多种换肤,遗憾的是我下载过的是VC版本的,对于一直执着于用Qt Creator 来开发的我来说,不大喜欢,工程文件之多之复杂,对于追求精简美的我来说更是觉得别扭,当然源码学习参考价值还是很高的,只是个人不大喜欢而已。

陆续看过slientman的QT整体换肤方案,链接地址:http://blog.csdn.net/slientman/article/details/5618950也从CSDN下过该可执行文件,也不知道是作者粗心还是故意,居然没有自带QT运行库,导致我电脑上试过几个版本的运行库都不行,作者也说了,花了很多精力,不打算开源,这个对于喜欢分享的我来说,心里又是一睹,不过本人还是带着诚意加过作者QQ,愿意自费购买一套,也一直没有得到作者的回复,有点失望。后面又在博客园里面看到24K纯开源(http://www.cnblogs.com/csuftzzk/)、文艺IT男(http://www.cnblogs.com/appsucc/)、 liulun(http://www.cnblogs.com/liulun/)等几位大侠写过的类似工具,尤其是这篇文章(http://www.cnblogs.com/liulun/p/3775294.html)让我认识到了还有fontawesome这个好东西,真心感谢作者!

在看过这么多习惯文章后,着手开始自己的QUI编写过程,一开始设想的是参照这篇文章http://www.cnblogs.com/appsucc/p/3257661.html来进行开发,封装成一个DLL,提供外部接口给需要加上皮肤的窗体调用,当开发完成之后,才发现还是会有一系列的问题,例如当主窗体需要关闭时,需调用this.parent().close()类似方法才可以关闭窗体,而且必须是QWidget才能加入到子窗体中,当有相关QDialog窗体打开需要给出返回值时,不能方便的提供done(1)这样的方法返回,后面索性抛弃了这种做法,还是采用QSS样式调用,相关样式都已经在样式表中写好,无非就五种颜色,采用了上下两种渐变颜色,normal两种,hover(select,focus等)两种,还有一个是文字颜色,只要将对应样式表替换这五种颜色即可,当然大部分时候替换的是四种颜色,文字颜色默认为白色,通用绝大部分渐变颜色。

核心处理部分:

1:无边框窗体处理

对标题栏安装eventFilter事件监听器监听鼠标双击事件,重载mouseMoveEvent、mousePressEvent、mouseReleaseEvent三个事件实现鼠标拖动,当窗体改变大小后还必须用QRect location;来记住当前窗体位置,方便按下右上角还原按钮时将窗体设置在最大化前的位置。

部分代码如下:

bool frmMain::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::MouseButtonDblClick) { this->on_btnMenu_Max_clicked(); return true; } return QObject::eventFilter(obj, event); } void frmMain::mouseMoveEvent(QMouseEvent *e) { if (mousePressed && (e->buttons() && Qt::LeftButton) && !max) { this->move(e->globalPos() - mousePoint); e->accept(); } } void frmMain::mousePressEvent(QMouseEvent *e) { if (e->button() == Qt::LeftButton) { mousePressed = true; mousePoint = e->globalPos() - this->pos(); e->accept(); } } void frmMain::mouseReleaseEvent(QMouseEvent *) { mousePressed = false; }

2:图形字体的使用

这里直接用的是网上的IconHelper类,也不知道最初作者是谁,反正代码也就几行,不难。

贴出CPP实现文件代码

#include "iconhelper.h" IconHelper* IconHelper::_instance = 0; IconHelper::IconHelper(QObject*): QObject(qApp) { int fontId = QFontDatabase::addApplicationFont(":/image/fontawesome-webfont.ttf"); QString fontName = QFontDatabase::applicationFontFamilies(fontId).at(0); iconFont = QFont(fontName); } void IconHelper::SetIcon(QLabel* lab, QChar c, int size) { iconFont.setPointSize(size); lab->setFont(iconFont); lab->setText(c); } void IconHelper::SetIcon(QPushButton* btn, QChar c, int size) { iconFont.setPointSize(size); btn->setFont(iconFont); btn->setText(c); }

在主窗体的构造函数中这样调用即可。

IconHelper::Instance()->SetIcon(ui->btnMenu_Close, QChar(0xf00d), 10);

右上角最大化按钮会有两个图标,最大化时候一个,还原时候一个,所以这里在事件中这样处理的。

void frmMain::on_btnMenu_Max_clicked() { if (max) { this->setGeometry(location); IconHelper::Instance()->SetIcon(ui->btnMenu_Max, QChar(0xf096), 10); ui->btnMenu_Max->setToolTip("最大化"); } else { location = this->geometry(); this->setGeometry(qApp->desktop()->availableGeometry()); IconHelper::Instance()->SetIcon(ui->btnMenu_Max, QChar(0xf079), 10); ui->btnMenu_Max->setToolTip("还原"); } max = !max; }

3:自定义弹出信息框、询问框、错误框

我比较偷懒,直接用新建的UI窗体来实现,对信息框、询问框、错误框的判断直接在setmessage函数中处理。

void frmMessageBox::SetMessage(const QString &msg, int type) { if (type == 0) { ui->labIcoMain->setStyleSheet("border-image: url(:/image/info.png);"); ui->btnCancel->setVisible(false); ui->lab_Title->setText("提示"); } else if (type == 1) { ui->labIcoMain->setStyleSheet("border-image: url(:/image/question.png);"); ui->lab_Title->setText("询问"); } else if (type == 2) { ui->labIcoMain->setStyleSheet("border-image: url(:/image/error.png);"); ui->btnCancel->setVisible(false); ui->lab_Title->setText("错误"); } ui->labInfo->setText(msg); }

4:设置全局皮肤样式

//设置皮肤样式 static void SetStyle(const QString &styleName) { QFile file(QString(":/image/%1.css").arg(styleName)); file.open(QFile::ReadOnly); QString qss = QLatin1String(file.readAll()); qApp->setStyleSheet(qss); qApp->setPalette(QPalette(QColor("#F0F0F0"))); }

myHelper::SetStyle("black");//黑色风格

html中main标签怎么设置样式,html中设置标题标签的方法(1)

myHelper::SetStyle("blue");//蓝色风格

html中main标签怎么设置样式,html中设置标题标签的方法(2)

myHelper::SetStyle("gray");//灰色风格

html中main标签怎么设置样式,html中设置标题标签的方法(3)

myHelper::SetStyle("navy");//天蓝色风格

html中main标签怎么设置样式,html中设置标题标签的方法(4)

首页 12下一页

栏目热文

html中title标签放在什么位置(html标题标签在哪组标签的内部)

html中title标签放在什么位置(html标题标签在哪组标签的内部)

制作网页时,经常需要设置网页的基本信息,如网页的标题、作者等。为此,HTML提供了一系列设置网页信息的标签,这些标签通常...

2023-10-28 17:40:33查看全文 >>

html引用标签设置(html修改标签属性)

html引用标签设置(html修改标签属性)

大家好,今天给大家分享一篇阅读的文章,本篇文章主要讲了 12 个 HTML 标签(组件),通过这些标签避免你在项目中集成...

2023-10-28 17:46:16查看全文 >>

html闭合标签结尾怎么用(html展开标签)

html闭合标签结尾怎么用(html展开标签)

一、 HTML语言HTML 指的是超文本标记语言 (Hyper Text Markup Language),它不是一种编...

2023-10-28 17:47:21查看全文 >>

html中h1标签怎么把它放到中间(html标签居中怎么做)

html中h1标签怎么把它放到中间(html标签居中怎么做)

一.html 介绍是网页的后缀,txt 后缀是文本 ,py 后缀是 python ,html 后缀就是网页的意思。我们如...

2023-10-28 17:37:25查看全文 >>

html怎么设置在新窗口中显示(html怎么设置右边框)

html怎么设置在新窗口中显示(html怎么设置右边框)

20230418星期二:打开新窗口的语法:注意 newUrl 加引号newUrl = 'https://chro...

2023-10-28 17:55:46查看全文 >>

htmltarget怎么用(html中target是什么意思)

htmltarget怎么用(html中target是什么意思)

1.语法在html中创建超链接非常简单,只需用标签环绕需要被链接的对象即可,其基本语法格式如下:<a href=&...

2023-10-28 17:26:20查看全文 >>

html标签添加参数(html如何通过标签加参数)

html标签添加参数(html如何通过标签加参数)

HTML基本标签的语法格式1.头部标签<head><head>头部标签内容</head&g...

2023-10-28 17:40:05查看全文 >>

传武原著小说叫什么(传武小说完结了吗)

传武原著小说叫什么(传武小说完结了吗)

文/张小暖传武被鲜儿误打误撞抓到二龙山后,鲜儿想偷偷背过震三江放了传武时,传武曾劝鲜儿和自己一起逃。可是鲜儿拒绝了。她说...

2023-10-28 17:34:26查看全文 >>

传武最终结局(传武的十善结局)

传武最终结局(传武的十善结局)

朱开山一家在哈尔滨开了山东菜馆,引起了本地商贾潘五爷的排斥和忌惮,潘五爷暗箱操作,给朱开山的菜馆找了很多次麻烦,“爆炒活...

2023-10-28 17:17:51查看全文 >>

传武漫画原著小说叫什么(传武漫画内容简介)

传武漫画原著小说叫什么(传武漫画内容简介)

这次给大家推荐的是一本集灵异,古风玄幻、传统鬼神为一体的漫画。追到现在,个人认为还是很不错的,而且已经很肥了,值得大家追...

2023-10-28 17:39:44查看全文 >>

文档排行