Qt知识点总结

将枚举类型转换为字符串

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

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

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

// 首先为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中的文字样式

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);
}

设置图标

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

网络编程

获取本机IP地址

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;
}

相关推荐

  1. Qt知识总结

    2024-02-01 05:46:01       35 阅读
  2. 【SpringBoot】知识总结

    2024-02-01 05:46:01       42 阅读
  3. JVM知识总结

    2024-02-01 05:46:01       36 阅读
  4. Docker知识总结

    2024-02-01 05:46:01       15 阅读
  5. Django知识总结

    2024-02-01 05:46:01       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-01 05:46:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-01 05:46:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-01 05:46:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-01 05:46:01       18 阅读

热门阅读

  1. TCP协议和UDP协议该如何选择

    2024-02-01 05:46:01       28 阅读
  2. Elasticsearch内核剖析

    2024-02-01 05:46:01       36 阅读
  3. 嵌入式学习记录15

    2024-02-01 05:46:01       31 阅读
  4. 「数据结构」实现顺序表

    2024-02-01 05:46:01       28 阅读
  5. sql注入之union联合注入

    2024-02-01 05:46:01       35 阅读
  6. Expect交互工具与字符处理

    2024-02-01 05:46:01       30 阅读
  7. 学习总结——1.31

    2024-02-01 05:46:01       43 阅读
  8. springboot启动异常

    2024-02-01 05:46:01       34 阅读