1. QT从mysql中读取datetime字段的数据时,会有字符 T 及 .000毫秒位
从数据库中读取的 = 2022-08-11T14:34:55.000
上述写法是国际标准化组织的国际标准ISO 8601是日期和时间的表示方法
如果从数据库中读取时可以如下操作:
(3条消息) QT技巧系列(13)QT 数据库日期字段显示带“T”字符的解决_ydyuse的博客-CSDN博客
写入数据库时:
QDateTime dt1;
dt1 = QDateTime::fromString(strdate,"yyyyMMdd hhmmss.zzz");
query.bindValue(4, dt1); 这种方式会出现“T”字符。
修改成如下方式:
QString tdo=dt1.toString("yyyy-MM-dd hh:mm:ss.zzz");
query.bindValue(1, tdo);
从数据库读出显示时:
如果直接显示
query.value(j).toString()则会出现“T”字符。
修改成如下方式显示:
query.value(j).toDateTime().toString("yyyy-MM-dd hh:mm:ss");
直接操作字符串
如果不能直接从数据库中操作,则直接对字符串进行操作 "2022-08-11T14:34:55.000"
替换掉 'T' 为 空格, 去掉.000
QString str = "2022-08-11T14:34:55.000";
strTemp = str.replace('T', ' ');
QString strTime = strTemp.remove(strTemp.length() - 4, 4);
2.字符串设置固定宽度,前位补零
int a = 1;//输出 01
int a = 1;
double b = 1.0384;
QString sttt = QString("a=%1, b=%2")
.arg(a, 2, 10, QLatin1Char('0')).arg(QString::number(b,'f', 2));
qDebug() <<"sttt = "<<sttt;
输出为:
sttt = "a=01, b=1.04"
3. double转QString时 小数点保留2位时
如上面代码 :
QString::number(11.42256,'f', 2)对于doule和float类型都是一样的,输出11.42
arg(QString::number(11.33, 'g', 1));//1.1e+1 科学计数法
4.对于Combox控件文字定位
想根据文字直接在combox中定位
m_pXLCom->findText(tbCnfig.strXL);//查到对应的索引号 ,这个函数得到对应的索引号
setCurrentText这个函数,如果combox中存在strXL的子项,则直接定位在子项处。 如果不存在,则combox默认是选中第一个
int nIndex = m_pXLCom->findText(strXL);//查到对应的索引号
m_pXLCom->setCurrentText(strXL);//如果有直接定位到索引位置,如果没有则是默认第一个
删除某个子项时:
5.combox删除某个子项时
先找到子项的索引,然后在删除
int nindex = m_pCom->currentIndex();
if(nindex > -1)
{
m_pCom->removeItem(nindex);
if(m_pCom->count() > 0)
{
m_pCom->setCurrentIndex(0);
}
}
6. QString做比较时compare
比较两个字符串是否相等时
if(strTableName.compare("xianlu") == 0)
7. QGroupbox添加组件
(1条消息) QGroupBox 添加组件 - CSDNhttps://www.csdn.net/tags/MtTaMg4sMDY1MTgwLWJsb2cO0O0O.html
//创建复选框
QGroupBox *groupBox = new QGroupBox(tr("服务器配置"));
groupBox->setFlat(false);//边框是否有线
groupBox->setCheckable(true);//是否有复选框
groupBox->setChecked(false);//默认是否勾选复选框
QHBoxLayout *mlayout = new QHBoxLayout();
m_ipLabel = new QLabel(tr("服务器ip:"));
m_ipLabel->setFixedSize(120,30);
m_ipLineEdit = new QLineEdit(this);
m_ipLineEdit->setFixedSize(180,40);
m_portLabel = new QLabel(tr("服务器端口:"));
mlayout->addWidget(m_ipLabel);
mlayout->addWidget(m_ipLineEdit);
mlayout->addStretch();
groupBox->setLayout(mlayout); //往里面添加布局
8. Tablewidget 删除行列时
如果想删除全部的行列,且表头不变时,可以直接用下句
TableWidget->setRowCount(0);
TableWidget->clearContents();//只删除内容,但行还在
或者使用for循环
for (int i = ui->tableWidget_3->rowCount() - 1; i >= 0; --i)
{
ui->tableWidget_3->removeRow(i);
}
9. QString当数字较大时,会显示成科学计数法,解决办法
double value =60000000.12345;
//显示科学计数法:'e'表示科学计数法,2代表保留两位小数
QString::number(value, 'e', 2);
//显示非科学计数法:'f'表示非科学计数法,2代表保留两位小数
QString::number(value, 'f', 2);
//如果直接用下面时,会显示成科学计数法
QString("%1").arg(value);
QString("%1").arg(value);时会显示成科学计数法,
解决办法就是用QString::number这个函数。
10. 修改输出exe的名称
直接修改.pro文件中targe后面的名称即可,
TEMPLATE = app #输出为exe类型
TARGET = XXDC #修改此处就能改变exe的名称,
上面的输出的名称为XXDC.exe