QT 常用知识

1. QT从mysql中读取datetime字段的数据时,会有字符 T 及 .000毫秒位

从数据库中读取的 = 2022-08-11T14:34:55.000

上述写法是国际标准化组织的国际标准ISO 8601是日期和时间的表示方法

ISO 8601_百度百科 (baidu.com)

如果从数据库中读取时可以如下操作:

 (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);
	}

参考:Qt QTableWidge遍历删除行的问题 - 咸鱼Doyoung - 博客园 (cnblogs.com)https://www.cnblogs.com/Doyoung/p/14440617.html

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值