C++/Qt 小知识记录2

工作中遇到的一些小问题,总结的小知识记录:C++/Qt

RGBA/ARGB转16进制颜色

使用QColor支持

// ARGB转Hex
QColor c;
c.setRed(color0.GetRed());
c.setGreen(color0.GetGreen());
c.setBlue(color0.GetBlue());
std::string strHexColor = c.name(QColor::HexArgb).toStdString();
//同理Hex转ARGB
QColor c(strHex);

int与RGB互转

//int 转换成 QColor
int red = nRGB >> 16 & 255;
int green = nRGB >> 8 & 255;
int blue = nRGB & 255;
QColor color = QColor(red, green, blue);
// QColor转换成int
int nRGB = ((0xFF << 24) | (color.red() << 16) | (color.green() << 8) | color.blue());

int转Hex值

使用QString支持

 QString strHex = QString::number(255, 16); // "FF"
//同理转回int
QString str = "FF";
bool ok;
int hex = str.toInt(&ok, 16); // hex == 255, ok == true

VS2015代码粗略统计

b*[^:b#/]+.*$

a. 编辑-查找和替换-选中“在文件中查找”弹出一个查找框;
b. 输入正则表达式 b*[^:b#/]+.*$;
选择查找整个解决方案,查找选项选择使用正则表达式,查找全部,最后就会统计出一共有几行。

QTableWidget设置

列宽设置

// 列宽自适应
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

在这里插入图片描述

// 最后一列自适应拉伸
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);

在这里插入图片描述

// 自定义列宽
ui->tableWidget->setColumnWidth(0, 30);
ui->tableWidget->setColumnWidth(1, 50);
ui->tableWidget->setColumnWidth(2, 150);
ui->tableWidget->setColumnWidth(3, 150);
ui->tableWidget->setColumnWidth(4, 120);
ui->tableWidget->setColumnWidth(5, 50);

整行选中

//整行选中的方式
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); 
//只选中一行
ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);

Item设置可选中但不可编辑

pItem->setFlags(pItem->flags() & ~Qt::ItemIsEditable);

setCellWidget控件居中

// 使用布局方式
QCheckBox* pCheckBox = new QCheckBox();

QWidget* widget = new QWidget;
QHBoxLayout *layout = new QHBoxLayout;
layout->setSpacing(0);
layout->setMargin(0);
layout->addWidget(pCheckBox);
layout->setAlignment(pCheckBox, Qt::AlignCenter); // 控件居中
widget->setLayout(layout);
ui->tableWidget->setCellWidget(nRow, nCol, widget);

C++ std路径相关操作

文件写出

// 文件写出
std::ofstream outfile("upload.txt", std::ios::out);
outfile.write(pBuffer, nLen);
outfile.close();

绝对路径转为相对路径

std::string strRootDir = "D:/Developer/Project/Document";
std::string strFilePath = "D:/Developer/Project/Document/xx.json";

if (strFilePath.find_first_of(strRootDir) >=0)
{
	strFilePath = "./" + strFilePath.substr(strRootDir.size() + 1, strFilePath.size() - 1);
}
// --> ./xx.json

字符替换

std::replace(strFileName.begin(), strFileName.end(), '\\', '/');

打印出GBK的平方米/立方米符号

QString GetSquareMeterString(char nSquare)
{
	char16_t square = 0xB2; // 平方米
	if (nSquare == 3)
	{
		square = 0xB3; // 立方米
	}
	return "m" + QString::fromUtf16(&square, 1);
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值