美化QFileDialog
美化QFileDialog
文章目录
- 美化QFileDialog
- 效果图
- #简述
- 功能
- 思路
- 代码篇
- 工程文件
- 结尾
效果图
#简述
在看Qt QFileDialog源码的时候,发现Qt自己做了一套文件管理框,UI如下;反之,Qt自己做了一套自己的UI文件,那么我们就能美化它。
功能
1.美化QFileDialog
2.支持QFileDialog的都支持
3.支持文件和文件夹多选
思路
自定义一个Dialog,UI如下
代码篇
CustomFileDialog::CustomFileDialog(QWidget *parent): QDialog(parent)
{ui.setupUi(this);//设置QFileDialog 透明,无边框,子窗口属性m_fileDialog = new QFileDialog(this, Qt::SubWindow | Qt::FramelessWindowHint);m_fileDialog->setAttribute(Qt::WA_TranslucentBackground);//使用Qt的文件选项框m_fileDialog->setOption(QFileDialog::DontUseNativeDialog, true);//QFileDialog 添加到自定义UI中ui.bodylayout->addWidget(m_fileDialog);this->setAttribute(Qt::WA_TranslucentBackground);this->setWindowFlags(Qt::FramelessWindowHint);setTitleName(QString::fromLocal8Bit("文件选择框"));//支持多选,即支持文件和文件夹选中QListView *pListView = m_fileDialog->findChild<QListView*>("listView");if (pListView){pListView->setSelectionMode(QAbstractItemView::ExtendedSelection);pListView->setItemDelegate(new NoFocusDelegate(pListView));}QTreeView *pTreeView = m_fileDialog->findChild<QTreeView*>("treeView");if (pTreeView){pTreeView->setSelectionMode(QAbstractItemView::ExtendedSelection);pTreeView->setItemDelegate(new NoFocusDelegate(pTreeView));pTreeView->header()->setDefaultAlignment(Qt::AlignLeft | Qt::AlignVCenter);}QLabel* lookinLabel = m_fileDialog->findChild<QLabel*>("lookInLabel");if (lookinLabel)lookinLabel->setText(QString::fromLocal8Bit("文件目录:"));QComboBox* fileTypeCombo = m_fileDialog->findChild<QComboBox*>("fileTypeCombo");if (fileTypeCombo)fileTypeCombo->setMinimumHeight(24);QComboBox* lookInCombo = m_fileDialog->findChild<QComboBox*>("lookInCombo");if (lookInCombo)lookInCombo->setMinimumHeight(24); QLineEdit* fileNameEdit = m_fileDialog->findChild<QLineEdit*>("fileNameEdit");if (fileNameEdit)fileNameEdit->setMinimumHeight(24);QDialogButtonBox *buttonBox = m_fileDialog->findChild<QDialogButtonBox *>("buttonBox");if (QPushButton *button = buttonBox->button(QDialogButtonBox::Open)){button->setStyleSheet("QPushButton{background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0,stop: 0 #00BAFF, stop: 1 #00A1FF);font-size: 12px;color: #FFFFFF;border-radius:2px;}""QPushButton:hover{background: #00C1FF;font-size: 12px;color: #FFFFFF;border-radius:2px;}""QPushButton:disabled{background: #F0F0F0;border: 1px solid #DDDDDD;font-size: 12px;color: #BBBBBB;border-radius:2px;}");button->setFixedSize(68, 24);}if (QPushButton *button = buttonBox->button(QDialogButtonBox::Save)){button->setStyleSheet("QPushButton{background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0,stop: 0 #00BAFF, stop: 1 #00A1FF);font-size: 12px;color: #FFFFFF;border-radius:2px;}""QPushButton:hover{background: #00C1FF;font-size: 12px;color: #FFFFFF;border-radius:2px;}""QPushButton:disabled{background: #F0F0F0;border: 1px solid #DDDDDD;font-size: 12px;color: #BBBBBB;border-radius:2px;}");button->setFixedSize(68, 24);}if (QPushButton *button = buttonBox->button(QDialogButtonBox::Cancel)){button->setStyleSheet("QPushButton{border: 1px solid #DDDDDD;font-size: 12px;color: #666666;border-radius:2px;}""QPushButton:hover{font-size: 12px;color: #00A1FF;border: 1px solid #00A1FF;border-radius:2px;}""QPushButton:disabled{background: #F0F0F0;border: 1px solid #DDDDDD;font-size: 12px;color: #BBBBBB;border-radius:2px;}");button->setText(QString::fromLocal8Bit("取消"));button->setFixedSize(68, 24);}buttonBox->disconnect();connect(buttonBox, SIGNAL(accepted()), this, SLOT(onAccepted()));//改成自己的槽connect(buttonBox, SIGNAL(rejected()), this, SLOT(onRejected()));//改成自己的槽connect(ui.sysMin, SIGNAL(clicked(bool)), this, SLOT(onShowMin(bool)));connect(ui.sysClose, SIGNAL(clicked(bool)), this, SLOT(onShowClose(bool)));
}
工程文件
Qt交流大会 853086607 收费群中
结尾
不定期上传新作品,解答作品相关问题。相关外,能解答则解答。欢迎大家一起探索Qt世界!
美化QFileDialog相关推荐
- 【转】飞扬青云_Qt开发经验
转自:Qt开发经验: 自己总结的这十多年来做Qt开发以来的经验,以及Qt相关武林秘籍电子书,会一直持续更新增加,欢迎各位留言增加内容或者提出建议,谢谢! 一.开发经验 01:001-010 当编译中发 ...
- Qt开发经验小技巧合集
一.开发经验 当编译发现大量错误的时候,从第一个看起,一个一个的解决,不要急着去看下一个错误,往往后面的错误都是由于前面的错误引起的,第一个解决后很可能都解决了. 定时器是个好东西,学会好使用它,有时 ...
- Qt武林秘籍学习笔记摘要
1 原文链接 Qt开发经验: 自己总结的这十多年来做Qt开发以来的经验,以及Qt相关武林秘籍电子书,会一直持续更新增加,欢迎各位留言增加内容或者提出建议,谢谢! (gitee.com) 编程语录: 自 ...
- Qt开发经验(转载)
0 前言说明 本文转载于https://qtchina.blog.csdn.net/?type=blog,feiyangqingyun的博客,感谢大佬的经验分析. 1 开发经验 01:001-010 ...
- qt 串口助手 界面美化
一.最终预览 二.添加资源文件 添加样式表css 三.初始化.引入样式表 ui->setupUi(this);//初始化样式表 this->initStyle();/*** @brief ...
- html5搜索框美化,CSS美化的漂亮搜索框
CSS美化的漂亮搜索框 我要搜索 搜索 var $ = function(id){return document.getElementById(id);} var formSubmit = funct ...
- CentOS 7.7 x86-64安装系统字体及美化实录
我在rMBP上用VMware Fushion 15.1安装了CentOS 7.7的虚拟机,带有gnome界面,打算用于日常的开发工作.但是发现界面实在是太丑陋了,决定趁周末折腾一下,网上研究了一些资料 ...
- Ubuntu 14.04 64位字体美化(使用文泉驿微黑)
Ubuntu 14.04安装并升级之后,变成楷体字体非常难看,我昨天搞了一晚上,终于理了个头绪,这里整理一下. 经过网上调研,大家的一致看法是,使用开源字体库文泉驿的微黑字体效果比较理想,甚至效果不输 ...
- 终端bash美化(FC)
终端bash美化(FC) 用Linux也已经一年多了,感觉几乎还是什么都不会. 大概是一直再做一些没多大意义的事的缘故吧,就像今天些的内容一样. 以前搞了一段时间的GENTOO,发现里面的bash提示 ...
最新文章
- 将Java程序变成可执行文件的一个简单方法
- 2021年春季学期-信号与系统-第十一次作业参考答案-第二小题
- yii2 / Console - yii2开发控制台应用时的还我漂漂拳
- python 元类 type_Python 使用元类type创建类对象常见应用详解
- 《Puppet实战手册》——2.5 使用标准的命名约定
- Codeforces Round #426 (Div. 2) C. The Meaningless Game
- (转)万万没想到,无人车其实是个劳动密集型产业
- 第一次在CSDN上写博客
- 运动控制器用c语言编程吗,中文可编程运动控制器
- 内部收益率计算公式用计算机,内部收益率的计算公式是什么
- 拆解1968年的美国军用电脑,真的怀疑是“穿越”啊!
- Android车辆运动轨迹大数据采集最佳实践
- 实现坐标转换--不同地理位置系统转换入门
- asp.net 开发过程中关于image控件中图片点击后地址乱码的问题
- 支付宝、微信注册时间,轻松查看!
- TCP/IP four-storey model
- 保定市2018-2019天气爬取
- 网络攻击常见技术方法及案例分析
- ATIPTA和CdnCtr
- 通过ChaCha20-Poly1305提升SCP传输速率