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;
}
相关推荐
SilentSlot13 小时前
【QT-QML】5. 简单变换
qt·qml
云中飞鸿21 小时前
VS2015安装后,安装QT59,之后安装qt-vsaddin-msvc2015-2.4.3.vsix 文件失败问题!
开发语言·qt
凯子坚持 c1 天前
Qt常用控件指南(9)
开发语言·qt
创客小邓1 天前
Qt对SQLite数据库的操作
数据库·qt·sqlite
小小码农Come on1 天前
QT布局介绍
开发语言·qt
云中飞鸿1 天前
QTCreator error: C3861: “_mm_loadu_si64”: 找不到标识符
qt
CodeByV1 天前
【Qt】信号与槽
开发语言·qt
枫叶丹41 天前
【Qt开发】Qt系统(十一)-> Qt 音频
c语言·开发语言·c++·qt·音视频
qq_397562312 天前
QT工程 , 生成别的电脑运行的exe程序
嵌入式硬件·qt
轩情吖2 天前
Qt的窗口
开发语言·c++·qt·窗口·工具栏·桌面级开发