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;
}
相关推荐
用户805533698032 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner2 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz7 天前
QML Hello World 入门示例
qt
xcyxiner10 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner10 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner11 天前
DicomViewer (添加模型类)3
qt
xcyxiner12 天前
DicomViewer (目录调整) 2
qt
xcyxiner12 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
桥田智能14 天前
桥田智能 QT-650S:面向白车身焊装的 800kg 重载快换解决方案
开发语言·qt·系统架构
森G14 天前
75、服务器源码解析---------云视频服务项目
linux·服务器·网络·c++·qt