QT中将外部字体加载到程序中

在Qt开发中,会遇到有些电脑没安装某种或者某一种字体,又不能每台电脑去安装。这时候,我们就要考虑在程序中将外部字体文件当做资源一样加载,保证显示效果一致。

main.cpp

#include "widget.h"
#include <QApplication>

#include <QFontDatabase>
#include <QIODevice>
#include <QFile>
#include <QDebug>

QString loadFontFamilyFromFiles(const QString &fontFileName)
{
   
   
    QString font = "";

    QFile fontFile(fontFileName);
    if(!fontFile.open(QIODevice::ReadOnly))
    {
   
   
        qDebug()<<"Open font file error";
        return font;
    }

    int loadedFontID = QFontDatabase::addApplicationFontFromData(fontFile.readAll()
<think>好的,我现在需要帮助用户在PyQt界面中向listWidget控件添加item。用户提到他们使用Qt Designer生成的界面,所以首先我应该考虑如何在PyQt代码中操作通过Designer创建的listWidget。 首先,用户需要的是示例代码,所以我要确保给出的代码正确且符合他们的使用场景。根据引用[3],按钮的名称必须与Qt Designer中的一致,因此代码中应该使用正确的对象名。比如,如果用户在Designer中将listWidget命名为listWidget,那么在代码中应该通过self.ui.listWidget来访问它。 接下来,添加item到QListWidget通常有两种方法:直接添加文本字符串或创建QListWidgetItem对象。对于简单的文本,可以使用addItem()方法。例如,self.ui.listWidget.addItem("新项")。这样就能在列表中添加一个项。 用户可能需要动态添加项,比如点击按钮时添加。根据引用[3]中的例子,按钮的信号连接到一个槽函数,这里可以引用类似的逻辑。比如,用户可能有一个pushButton_add_item按钮,点击时触发添加item的操作。因此,代码示例中应该包括信号连接的步骤,如self.pushButton_add_item.clicked.connect(self.add_item)。 然后,我需要确保代码中的槽函数正确实现添加item的功能。例如,在add_item函数中调用addItem方法。同时,如果用户需要自定义项的属性,比如设置背景颜色或图标,可以参考引用[2]中的代码,使用setBackground和setIcon方法。但用户的问题主要是添加item,这部分可能暂时不需要,不过可以作为扩展说明。 另外,引用[1]提到了使用Qt Designer生成Python代码的例子,可能涉及到如何正确加载.ui文件。用户可能已经使用pyuic将.ui文件转换为Python类,因此在代码中需要正确初始化UI,如使用setupUi方法。这部分应该在示例代码中体现出来,确保用户能够正确集成到他们的项目中。 还需要注意,用户可能希望添加多个项或者从其他数据源动态加载数据。例如,从列表中添加多个项,可以使用addItems()方法,传入一个字符串列表。这可以作为另一种情况的示例,帮助用户更灵活地操作listWidget。 最后,确保示例代码的完整性和正确性,包括必要的导入语句(如QListWidgetItem, QColor等),以及类的结构(如继承QMainWindow)。同时,检查是否有拼写错误或语法问题,避免用户复制时出现错误。 总结步骤: 1. 加载Qt Designer生成的UI。 2. 获取listWidget对象。 3. 连接按钮的点击事件到槽函数。 4. 在槽函数中实现添加item的逻辑,包括简单文本和自定义项。 5. 提供两种添加方式的示例代码。 6. 提示用户注意对象名称的一致性,如引用[3]所述。</think>在PyQt中向`QListWidget`添加项可通过`addItem()`或`addItems()`方法实现。以下是结合Qt Designer生成界面的具体示例: --- ### 实现步骤 1. **在Qt Designer中设置控件** - 拖放一个`QListWidget`到窗口,命名为`listWidget`(或其他自定义名称) - 添加一个按钮`pushButton_add`用于触发添加操作[^3] 2. **在PyQt代码中添加项** ```python from PyQt5.QtWidgets import QMainWindow, QListWidgetItem from PyQt5.QtGui import QColor, QIcon class MyWindow(QMainWindow): def __init__(self): super().__init__() # 加载Qt Designer生成的UI self.ui = Ui_MainWindow() # 替换为实际UI类名 self.ui.setupUi(self) # 连接按钮点击事件 self.ui.pushButton_add.clicked.connect(self.add_item) def add_item(self): # 方法1:直接添加文本 self.ui.listWidget.addItem("新项目") # 方法2:创建带样式的QListWidgetItem item = QListWidgetItem() item.setText("自定义项") item.setBackground(QColor(200, 255, 200)) # 设置背景色 item.setIcon(QIcon("icon.png")) # 设置图标 self.ui.listWidget.addItem(item) ``` --- ### 关键点说明 - **对象名称匹配**:`self.ui.listWidget`中的`listWidget`需与Qt Designer中控件名称一致[^3] - **动态添加**:可通过循环或外部数据源批量添加: ```python items = ["选项1", "选项2", "选项3"] self.ui.listWidget.addItems(items) ``` - **自定义项**:通过`QListWidgetItem`可设置图标、颜色、字体等属性[^2] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值