Qt知识点总结

将枚举类型转换为字符串

  • 这里使用的在网络编程中,获取socket状态并显示的时候,遇到的一个问题
cpp 复制代码
#include <QMetaEnum>

// 将枚举类型转换为字符串
QMetaEnum metaEnum = QMetaEnum::fromType<QAbstractSocket::SocketState>();
const char *c_str = metaEnum.valueToKey(socketState);
QString str = QString(c_str);

使用事件过滤器实现,点击lineEdit,按下回车,调用btn的点击槽函数

cpp 复制代码
// 首先为lineEdit安装事件过滤器
ui->lineEdit->installEventFilter(this);

// 事件过滤器函数
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    // 判断当前对象是否是lineEdit,并且判断是否是键盘事件
    if (obj == ui->lineEdit && event->type() == QEvent::KeyPress)
    {
        // 静态转换
        QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
        // 判断是否是enter键,这里还有个key_Return
        if (keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return)
        {
            // 调用点击槽函数
            ui->btnSendMsg->click();
            return true; // 拦截事件,不再传递给editMessage
        }
    }

    return QObject::eventFilter(obj, event);
}

设置插入到QplainTextEdit中的文字样式

cpp 复制代码
void MainWindow::InsertPlantText(QString text, int fontSize, QColor fontColor, QColor backColor)
{
    // 先保存当前的字符格式
    QTextCharFormat originFmt = ui->plainTextEdit->currentCharFormat();
    
    // 设置新的字符格式
    QTextCharFormat fmt;
    // 设置字体大小
    fmt.setFontPointSize(fontSize);
    // 设置字体色
    fmt.setForeground(QBrush(fontColor));
    // 设置背景色
    fmt.setBackground(QBrush(backColor));
    // 设置文本框格式
    ui->plainTextEdit->mergeCurrentCharFormat(fmt);
    //文本框添加文本
    ui->plainTextEdit->appendPlainText(text);

    // 设置回之前的字符格式
    ui->plainTextEdit->setCurrentCharFormat(originFmt);
}

设置图标

  • 设置运行后,左上角和下面任务栏的图标
cpp 复制代码
// 设置图标
this->setWindowIcon(QIcon(":/images/wx.ico"));  // "xxx"中填路径
  • 设置exe文件的图标
cpp 复制代码
// 在xxx.pro中添加 - 注意这里要填wx.ico对于xxx.pro的相对路径
RC_ICONS += wx.ico  

网络编程

获取本机IP地址

cpp 复制代码
QString getLocalIP()
{
    // 获取本机主机名
    QString hostName = QHostInfo::localHostName();
    // 根据主机名获取主机信息
    QHostInfo hostInfo = QHostInfo::fromName(hostName);
    // 通过主机信息获取主机地址列表
    QList<QHostAddress> addrList = hostInfo.addresses();
    // 定义一个字符串用于存放主机IP
    QString localIp = "";
    if(!addrList.isEmpty())
    {
        // 遍历addrList
        for(int i = 0; i < addrList.count(); i++)
        {
            QHostAddress addr = addrList.at(i);
            // 判断如果是IPV4地址,就加到localIp字符串中
            if(addr.protocol() == QAbstractSocket::IPv4Protocol)
            {
                localIp += addr.toString() + " ";
            }
        }
    }
    return localIp;
}
相关推荐
无小道44 分钟前
QT——QFIie和QFileInfo文件类
开发语言·qt·命令模式
薛定谔的猫喵喵1 小时前
基于PyQt5的视频答题竞赛系统设计与实现
开发语言·qt·音视频
薛定谔的猫喵喵3 小时前
基于C++ Qt的唐代诗歌查询系统设计与实现
c++·qt·sqlite
枫叶丹43 小时前
【Qt开发】Qt界面优化(一)-> Qt样式表(QSS) 背景介绍
开发语言·前端·qt·系统架构
明月醉窗台15 小时前
qt使用笔记六之 Qt Creator、Qt Widgets、Qt Quick 详细解析
开发语言·笔记·qt
R_.L18 小时前
【QT】常用控件(按钮类控件、显示类控件、输入类控件、多元素控件、容器类控件、布局管理器)
开发语言·qt
无小道20 小时前
Qt——常用控件
开发语言·qt
初次见面我叫泰隆20 小时前
Qt——5、Qt系统相关
开发语言·qt·客户端开发
牵牛老人1 天前
【Qt 开发后台服务避坑指南:从库存管理系统开发出现的问题来看后台开发常见问题与解决方案】
开发语言·qt·系统架构
xmRao1 天前
Qt+FFmpeg 实现 PCM 音频转 AAC 编码
qt·ffmpeg·pcm