美化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相关推荐

  1. 【转】飞扬青云_Qt开发经验

    转自:Qt开发经验: 自己总结的这十多年来做Qt开发以来的经验,以及Qt相关武林秘籍电子书,会一直持续更新增加,欢迎各位留言增加内容或者提出建议,谢谢! 一.开发经验 01:001-010 当编译中发 ...

  2. Qt开发经验小技巧合集

    一.开发经验 当编译发现大量错误的时候,从第一个看起,一个一个的解决,不要急着去看下一个错误,往往后面的错误都是由于前面的错误引起的,第一个解决后很可能都解决了. 定时器是个好东西,学会好使用它,有时 ...

  3. Qt武林秘籍学习笔记摘要

    1 原文链接 Qt开发经验: 自己总结的这十多年来做Qt开发以来的经验,以及Qt相关武林秘籍电子书,会一直持续更新增加,欢迎各位留言增加内容或者提出建议,谢谢! (gitee.com) 编程语录: 自 ...

  4. Qt开发经验(转载)

    0 前言说明 本文转载于https://qtchina.blog.csdn.net/?type=blog,feiyangqingyun的博客,感谢大佬的经验分析. 1 开发经验 01:001-010 ...

  5. qt 串口助手 界面美化

    一.最终预览 二.添加资源文件 添加样式表css 三.初始化.引入样式表 ui->setupUi(this);//初始化样式表 this->initStyle();/*** @brief ...

  6. html5搜索框美化,CSS美化的漂亮搜索框

    CSS美化的漂亮搜索框 我要搜索 搜索 var $ = function(id){return document.getElementById(id);} var formSubmit = funct ...

  7. CentOS 7.7 x86-64安装系统字体及美化实录

    我在rMBP上用VMware Fushion 15.1安装了CentOS 7.7的虚拟机,带有gnome界面,打算用于日常的开发工作.但是发现界面实在是太丑陋了,决定趁周末折腾一下,网上研究了一些资料 ...

  8. Ubuntu 14.04 64位字体美化(使用文泉驿微黑)

    Ubuntu 14.04安装并升级之后,变成楷体字体非常难看,我昨天搞了一晚上,终于理了个头绪,这里整理一下. 经过网上调研,大家的一致看法是,使用开源字体库文泉驿的微黑字体效果比较理想,甚至效果不输 ...

  9. 终端bash美化(FC)

    终端bash美化(FC) 用Linux也已经一年多了,感觉几乎还是什么都不会. 大概是一直再做一些没多大意义的事的缘故吧,就像今天些的内容一样. 以前搞了一段时间的GENTOO,发现里面的bash提示 ...

最新文章

  1. 将Java程序变成可执行文件的一个简单方法
  2. 2021年春季学期-信号与系统-第十一次作业参考答案-第二小题
  3. yii2 / Console - yii2开发控制台应用时的还我漂漂拳
  4. python 元类 type_Python 使用元类type创建类对象常见应用详解
  5. 《Puppet实战手册》——2.5 使用标准的命名约定
  6. Codeforces Round #426 (Div. 2) C. The Meaningless Game
  7. (转)万万没想到,无人车其实是个劳动密集型产业
  8. 第一次在CSDN上写博客
  9. 运动控制器用c语言编程吗,中文可编程运动控制器
  10. 内部收益率计算公式用计算机,内部收益率的计算公式是什么
  11. 拆解1968年的美国军用电脑,真的怀疑是“穿越”啊!
  12. Android车辆运动轨迹大数据采集最佳实践
  13. 实现坐标转换--不同地理位置系统转换入门
  14. asp.net 开发过程中关于image控件中图片点击后地址乱码的问题
  15. 支付宝、微信注册时间,轻松查看!
  16. TCP/IP four-storey model
  17. 保定市2018-2019天气爬取
  18. 网络攻击常见技术方法及案例分析
  19. ATIPTA和CdnCtr
  20. 通过ChaCha20-Poly1305提升SCP传输速率

热门文章

  1. 企业宣传型网站有什么好处?
  2. 23王道数据结构代码题全解(一)
  3. 集合运算(并集、交集、余集)
  4. Codeforces」 Round #782 (Div. 2) A —D
  5. 曾国藩的做人36字诀!
  6. 第十三届蓝桥杯JavaB组省赛F题——最大子矩阵 (AC)
  7. redis 使用 及 获取当前时间到今天截止的秒数
  8. [论文阅读] 颜色迁移-梯度保护颜色迁移
  9. 机器学习(13)——对抗攻击
  10. Echarts 柱图中的柱条(bar)的最小高度设置方法,数字显示不全的解决方法