跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 重写 QComboBox,实现自定义 QFontComboBox,可以添加自定义字体,显示字体样式
未分類
2021 年 1 月 2 日

重写 QComboBox,实现自定义 QFontComboBox,可以添加自定义字体,显示字体样式

重写 QComboBox,实现自定义 QFontComboBox,可以添加自定义字体,显示字体样式

資深大佬 : zoule 7

在开发的过程中,有个需求,是添加一个字体选择框,这个简单,我可以直接用了 QFontComboBox 解决,但是我的需求是字体不用系统字体,而是用我们自定义添加的字体库,后来我尝试用 QComboBox 解决,但是,这个鬼东西却不能单独改变单独 item 的字体样式,算了,直接自己写吧,话不多说,上代码:

 class CFontComboBox : public QComboBox {     Q_OBJECT private:     QListWidget * mFontList; public:     CFontComboBox(QWidget * parent = nullptr);     void addFont(QString famil);     void addFonts(QStringList famils); protected:     void wheelEvent(QWheelEvent ) override; };  .cpp 文件  CFontComboBox::CFontComboBox(QWidgetparent) :     QComboBox(parent) {     mFontList = new QListWidget(this);     setModel(mFontList->model());     setView(mFontList);     mFontList->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);     setStyleSheet("QComboBox{combobox-popup:0;}");     setMaxVisibleItems(5); } void CFontComboBox::wheelEvent(QWheelEvent * event) { } void CFontComboBox::addFont(QString famil) {     auto item = new QListWidgetItem(famil);     QFont font;     font.setFamily(famil);     item->setFont(font);     QIcon icon(":icons/T.png");     item->setIcon(icon);     mFontList->addItem(item); } void CFontComboBox::addFonts(QStringList famils) {     for (auto famil : famils)     {         addFont(famil);     } } 

大功告成,话不多说,上图: 重写 QComboBox,实现自定义 QFontComboBox,可以添加自定义字体,显示字体样式

自定义的是没有前面是没有那个图标的,这是我让 UI 给我设计的,想要的可以拿去用,话不多说,上图:

重写 QComboBox,实现自定义 QFontComboBox,可以添加自定义字体,显示字体样式

为了防止有人看不懂,我还是解释一下吧,看懂的直接跳过, setView(),是把我们的 View 替换上去,然后我们在对我们的 View 进行操作,

setStyleSheet(“QComboBox{combobox-popup:0;}”); setMaxVisibleItems(5); 

这三句是为了设置滚动条和最大显示个数,不需要的可以不用设置 我这里重写了 wheelEvent 方法,是为了我不想不让用户通过鼠标去改变字体,不需要的可以不重写, 最后 addFont 和 addFonts 不用解释了吧,直接用这两个方法去添加字体都行了 如果感觉我的实例可以帮助到你,记得关注,以后会经常更新 Qt 技巧和方法 话不多说,下课

大佬有話說 (3)

  • 資深大佬 : QBugHunter

    谁告诉你 QComboBox 不能单独改变下拉菜单样式表的?

    QComboBox QAbstractItemView::item{min-height:20px}

  • 資深大佬 : QBugHunter

    QComboBox 的下拉菜单(辅助控制器)叫 QAbstractItemView
    ![]( https://jxf2008-1302581379.cos.ap-nanjing.myqcloud.com/QtNotes/28-4.png)

  • 資深大佬 : ysc3839

    这个图标加了跟没加一样,因为都是一样的,加了对用户使用没有帮助。
    要是选择图标的列表,加个图标预览就比较好。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具