正则表达式
#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行