正则表达式

#include <qregularexpression.h>
QString message = "CPU:12%"
QRegularExpression regExp("[0-9]+%");
QRegularExpressionMatch match = regExp.match(message);
if (match.hasMatch()) {
    qDebug() << match.captured(0);
}

获取操作系统位数

#include <QSysInfo>
QString curCpuArch = QSysInfo::currentCpuArchitecture();
QString sysBit = "unknown";
if (curCpuArch.contains("64"))
    sysBit = "64位";
else
    sysBit = "32位";

获取CPU信息

#include <qsettings.h>
//获取CPU信息
QSettings *CPU = new QSettings("HKEY_LOCAL_MACHINE\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",
    QSettings::NativeFormat);
QString cpuInfo = CPU->value("ProcessorNameString").toString();

获取系统盘可用空间

#include <windows.h>
#include <QDir>
#include <QFileInfoList>
//获取系统盘可用空间
QString m_diskDescribe = "";
QFileInfoList list = QDir::drives();
QString dirName = list.first().absolutePath();
dirName.remove("/");
LPCWSTR lpcwstrDriver = (LPCWSTR)dirName.utf16();
ULARGE_INTEGER liFreeBytesAvailable, liTotalBytes, liTotalFreeBytes;
if (GetDiskFreeSpaceEx(lpcwstrDriver, &liFreeBytesAvailable, &liTotalBytes, &liTotalFreeBytes)) 
{
QString free = QString::number((double)liTotalFreeBytes.QuadPart / 1024 / 1024 / 1024, 'f', 1);
free += "G";
/*QString all = QString::number((double)liTotalBytes.QuadPart / 1024 / 1024 / 1024, 'f', 1);
all += "G";*/
double freeMem = (double)liTotalFreeBytes.QuadPart / 1024 / 1024 / 1024;
m_diskDescribe += free;
}

QT发送网络请求

HttpHelper::HttpHelper(QObject *parent) : QObject(parent)
{
    QNetworkRequest qNetworkRequest(QUrl("http://119.29.29.29/d"));
    qNetworkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
    QNetworkAccessManager * networkAccessManager = new QNetworkAccessManager();
    QString paras = "dn=api.biaoxue100.com";
    QNetworkReply * qNetworkReply =  networkAccessManager->post(qNetworkRequest, paras.toUtf8());
    connect(qNetworkReply, SIGNAL(finished()), this, SLOT(DealFinished()));
}

void HttpHelper::DealFinished()
{
    QNetworkReply *reply = static_cast<QNetworkReply*>(sender());
    if (reply->error() != QNetworkReply::NoError) 
    {
        reply->deleteLater();
        return;
    }
    QString res = QString::fromUtf8(reply->readAll());
    qDebug()<<res;
}

QString字符串常量赋值

//对于中文,不要直接写在赋值号的右边,编码格式可能会存在问题
QString text = "飞流直下三千尺,疑是银河落九天";
//应对中文字符添加宏QStringLiteral,具体需修改为以下格式:
QString text = QStringLiteral("飞流直下三千尺,疑是银河落九天");

QLineEdit设置

1、有效性验证,只允许输入数字

ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("[0-9]+$")));

2、添加QAction

QAction * action = new QAction(ui->lineEdit);
action->setIcon(QIcon(":/icon.png"));
//将action添加至右侧位置
ui->lineEdit->addAction(action, QLineEdit::TrailingPosition);
//action连接槽函数
connect(action, &QAction::triggered, this, &MainWidget::doSomething);

3、添加事件监听器

ui->lineEdit->installEventFilter(this);
bool MainWidget::eventFilter(QObject *watched, QEvent *event)
{
    if(watched == ui->lineEdit) {
        //成为焦点
        if(event->type() == QEvent::FocusIn) {
            ui->lineEdit->setStyleSheet("QLineEdit#lineEdit{border-radius:6px;padding:9px 12px;color:#313131;border:1px solid #FF9637;}");
            action_->setIcon(QIcon(":/focus.png"));
        }
        //失去焦点
        else if(event->type() == QEvent::FocusOut){
            ui->lineEdit->setStyleSheet("QLineEdit#lineEdit{border-radius:6px;padding:9px 12px;color:#313131;border:1px solid #E7E7E7;}");
            action_->setIcon(QIcon(":/normal.png"));
        }
    }
    return QWidget::eventFilter(watched, event);
}

QWidget设置鼠标穿透事件

//当在QTableWidget的单元格中添加了一个QWidget时,QWidget会屏蔽单元格的点击事件,此时可以对QWidget设置穿透属性,这样就可以触发QTableWidget的单元格点击事件了。
QWidget *widget = new QWidget(this);
widget->setAttribute(Qt::WA_TransparentForMouseEvents, true);
//将widget添加到tableWidget的单元格中
ui->tableWidget->setCellWidget(0, 4, widget);
//连接槽函数
connect(ui->tableWidget, SIGNAL(cellClicked(int,int)), this, SLOT(doSomething(int,int)));

QTableWidget取消选中行

ui->tableWidget->setCurrentItem(NULL); // 选中-1行

TODO

最后修改:2025 年 06 月 05 日
如果觉得我的文章对你有用,请随意赞赏