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;
}
相关推荐
颜*鸣&空3 小时前
QT实现串口通信+VSPD+串口调试工具
开发语言·qt
颜*鸣&空7 小时前
QT程序实现串口通信案例
开发语言·qt
Main. 247 小时前
从0到1学习Qt -- 常见控件之显示类控件
qt·学习
qq_4017004113 小时前
Qt中事件循环与并发机制的协同工作
qt
qq_401700412 天前
Qt Positioning 模块访问设备地理位置信息
开发语言·qt
闫有尽意无琼2 天前
银河麒麟v11 arm编译Qt creator8.0.2报错
开发语言·qt
lqj_本人2 天前
鸿蒙Qt触控疑云:事件传递丢失与坐标偏移修复
qt·华为·harmonyos
_OP_CHEN2 天前
从零开始的Qt开发指南:(五)Qt 常用控件之 QWidget(上):解锁 Qt 界面开发的核心基石
开发语言·c++·qt·前端开发·qwidget·gui开发·qt常用控件
happyjoey2172 天前
使用Qt自带的Maintenance Tool将Qt6.9升级为QT6.10
开发语言·qt
lqj_本人2 天前
鸿蒙Qt生命周期:后台被杀后的数据自救
qt·华为·harmonyos