目录
3.用数组和stl的时候一定要判断是否为空,即使显得很啰嗦。
扫描二维码关注公众号,回复:
13205013 查看本文章
1.获取时间差
QTime startTime = QTime::currentTime();
QTime endTime = QTime::currentTime();
int nElspsed = m_rButtontime.msecsTo(endTime);
2.注册signal和slot数据类型
qRegisterMetaType<QList<QString>>("QList<QString>");
3.用数组和stl的时候一定要判断是否为空,即使显得很啰嗦。
if(!list.isEmpty()){
//statement
}
4.读文件
QFile file("mibox.bnf");
if (!file.open(QIODevice::ReadOnly))
{
qDebug() << QStringLiteral("读取文件失败");
}
//将每一行读取
while (!file.atEnd())
{
QTextCodec *codec = QTextCodec::codecForName("GBK");
QString line = codec->toUnicode(file.readLine());
}
file.close();
5.写文件
QFile writefile("mibox.bnf");
QStringList list;
if (writefile.open(QIODevice::WriteOnly))
{
QTextStream wrtstream(&writefile);
for (auto strLine : list)
{
QTextCodec *codec = QTextCodec::codecForName("GBK");
wrtstream << codec->toUnicode(strLine.toLocal8Bit());
}
}
writefile.close();
6.设置样式的伸展度
pWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
7.设置窗口的属性
setWindowFlags(Qt::FramelessWindowHint);
8.QString转QJsonObject
QJsonObject mitrain::stringToJson(QString &str)
{
QJsonObject l_ret;
QJsonParseError l_err;
QJsonDocument l_doc = QJsonDocument::fromJson(str.toLocal8Bit(), &l_err);
if (l_err.error == QJsonParseError::NoError)
{
if (l_doc.isObject())
{
l_ret = l_doc.object();
}
}
return l_ret;
}
9.Combox添加代理,使QSS生效
QStyledItemDelegate *itemDelegate = new QStyledItemDelegate(this);
ui->comboBox->setItemDelegate(itemDelegate);
10.QLabel中图片自适用
QPixmap image(":/other/image/logo_gray.png"); //保持长宽比 //平滑转换
QPixmap fitpixmap=image.scaled(ui->label->size(), Qt::KeepAspectRatio,
Qt::SmoothTransformation);
ui->label->setAlignment(Qt::AlignCenter);
ui->label->setPixmap(fitpixmap);
11.ListWidget选中去掉边框
qsslist.append("*{outline:none;}");
ui->listWidget->setFocusPolicy(Qt::NoFocus);
12.绑定按钮
先设置按钮可以被选中setCheckable(true);,再在点击时候设置被选中或者不被选中(都要设置)btn->setChecked(true);需要设置qss的QPushButton::checked{};
QList<QPushButton*>navBtns = ui->wid_right->findChildren<QPushButton*>();
foreach (QPushButton*btn, navBtns) {
btn->setCheckable(true);
btn->setFixedSize(47,50);
connect(btn,&QPushButton::clicked,this,&Widget::on_btnClick);
}
//on_btnClick
QPushButton * btnOrigin = (QPushButton*)sender();
QList<QPushButton*>pbtns = ui->wid_right->findChildren<QPushButton*>();
for(int i = 0;i < pbtns.count(); ++i){
if(pbtns[i] == btnOrigin){
pbtns[i]->setChecked(true);
ui->stackedWidget->setCurrentIndex(i);
}else{
pbtns[i]->setChecked(false);
}
}
13.LIBS+=
-L 空格 相对路径 -l链接库名字
或者
相对路径/链接库完整名字
LIBS +=-L $$PWD/../libs/ -lWSCommon_d
LIBS +=$$PWD/../libs/WSCommon_d.dll
14.文件另存为
QFileDialog fileDialog;
QString fileName = fileDialog.getSaveFileName(this,tr("Open File"),"/home",tr("Text File(*.txt)"));
if(fileName == "")
{
return;
}
QFile file(fileName);
if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
qDebug()<<"打开文件失败";
return;
}
else
{
QTextStream textStream(&file);
//下面的str是保存的内容
QStringList txtList;;
for(int i = 0; i < m_List.count(); ++i){
txtList.append(m_List[i].second);
}
QString str = txtList.join("\n");
textStream<<str;
file.close();
}
15qss 设置属性
//初始化
m_lbl->setObjectName("lblText");
m_lbl->setProperty("TextColor","black");
//qss
setStyleSheet("#lblText[TextColor=\"red\"]{color:red;}#lblText[TextColor=\"black\"]{color:black;}");
//使用
m_lbl->style()->unpolish(m_lbl);
m_lbl->setProperty("TextColor","black");
m_lbl->style()->polish(m_lbl);
m_lbl->update();
16打开百度并搜索
QByteArray url = "https://www.baidu.com/s?ie=utf-8&wd=";
url+=" 天气";
QDesktopServices::openUrl(QUrl(url));
17激活窗口调用处用,showEvent里没用
this->showNormal();
this->raise();
this->activateWindow();
18.json解析中文字符
QTextCodec *codec = QTextCodec::codecForName("utf8");
QString all = codec->toUnicode(reply->readAll());
19.方形图片转圆形
QPixmap MiCommonFunc::pixToRound(const QPixmap &srcPixMap, int radius)
{
if (srcPixMap.isNull()) {
return srcPixMap;
}
QRect size(0,0,radius * 2,radius * 2);
int imageWidth = radius * 2;
int imageHeight = radius * 2;
//处理大尺寸的图片,保证图片显示区域完整
QPixmap newPixMap = srcPixMap.scaled(imageWidth, (imageHeight == 0 ? imageWidth : imageHeight)
,Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
QPixmap destImage(imageWidth, imageHeight);
destImage.fill(Qt::transparent);
QPainter painter(&destImage);
painter.setRenderHints(QPainter::Antialiasing, true);
painter.setRenderHints(QPainter::SmoothPixmapTransform, true);
QPainterPath path;
path.addRoundedRect(size, radius, radius);
painter.setClipPath(path);
painter.drawPixmap(0, 0, imageWidth, imageHeight, newPixMap);
return destImage;
}
20.图片转data,data转图片
//数据转Pixmap
QPixmap tempPixmap ;
tempPixmap.loadFromData(data);
//Pixmap 转数据
QByteArray ba;
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
img.save(&buffer, "PNG");
return ba;
21 QEventloop超时检测
QEventLoop loop;
int nElec = 0;
QTimer timer;
timer.setSingleShot(true);
timer.setInterval(10000);
QObject::connect(&timer,&QTimer::timeout,&loop,&QEventLoop::quit);
QObject::connect(device,&HidDevice::sig_electiric,&loop,
[&loop,&nElec,&timer](const int& value)
{
if(timer.isActive())
timer.stop();
nElec = value;
loop.quit();
});
device->getDeviceInfo();
timer.start();
loop.exec();
return nElec;
22. 智能指针 QScopedPointer
出了作用域,自动析构
QScopedPointer<ExportDlg>exportDlg(new ExportDlg);