Qt之常用功能代码片段

3 篇文章 0 订阅

一、文件操作

打开文件

打开指定文件,给到文件路径+文件名即可

	QDesktopServices::openUrl(QUrl("url+name"));

删除文件

	QFile::remove("url+name");
	QFileInfo info(saveFile);
	qDebug() << info.exists();
	qDebug() << info.isFile();
	qDebug() << info.isReadable();
	qDebug() << info.isWritable();
	qDebug() << info.created();
	qDebug() << info.lastRead();
	qDebug() << info.lastModified();
	qDebug() << info.path();
	qDebug() << info.fileName();
	qDebug() << info.suffix();//后缀名
	qDebug() << info.size();

二、弹出提示消息对话框

提示信息

	QMessageBox::information(this,tr("Export data succeed"),tr("data saved in %1").arg(saveFile),tr("OK"));

询问选择

	int ret = QMessageBox::question(NULL, "question", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
	if (ret == QMessageBox::Yes)
	{
		qDebug()<<"你点击了yes";
	}

三、数据库相关

连接数据库

必须在.pro工程文件中加入QT += sql
· 以PGSQL为例
//添加头文件
#include <QSqlDatabase>
#include <QSqlError>

void connect(){
	//添加数据库驱动
    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
	//设置连接数据库的ip、端口、数据库名、用户名、密码
    db.setHostName("127.0.0.1");
    db.setPort(9988);
    db.setDatabaseName("hcviewmib");
    db.setUserName("hctel");
    db.setPassword("letch");
    //判断是否连接成功
    if(db.open() == false)
    {
        QMessageBox::warning(NULL,"warning",db.lastError().text());
        return false;
    }
}

操作数据库

· 查询数据库
	//开始数据库操作
	//这里数据连接成功后,只连接一个数据库是不需要传参数
    QSqlQuery query;
    //准备sql语句
    query.prepare("select n.nelmtno ,n.celmtname ,n.cdeviceipaddr from t_netelmts n ");
    query.exec();
	//开始取数据
    while(query.next())
    {
		//将数据存储到结构体中
		NELMT_DEV dev;
		dev.nelmtno = query.value(0).toString();
		dev.celmtname = query.value(1).toString();
		dev.cdeviceipaddr = query.value(2).toString();
        m_nelmts.append(dev);
    }

扩展

· 可以通过query.addBindValue来绑定sql语句中 占位符
	QString name = "loo";
	query.prepare("select *from user where username=?");
    query.addBindValue(name);

四、TableWidget操作

初始化tableWidget

	QStringList header;
    header<<QString::fromLocal8Bit("姓名")<<QString::fromLocal8Bit("手机")
         <<QString::fromLocal8Bit("地址");
    //设置有几列
    tableWidget->setColumnCount(header.count());
    //设置有几行
    tableWidget->setRowCount(0);
    //列和行必须要设置
    tableWidget->setHorizontalHeaderLabels(header);//设置表头内容
    tableWidget->verticalHeader()->setVisible(false); //隐藏列表头
    tableWidget->horizontalHeader()->setVisible(true); //隐藏行表头
	tableWidget->horizontalHeader()->setStretchLastSection(true);//均分各列
· 可选内容
	//设置表格不可编辑
	tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
	//设置表头背景颜色
	ui->tableWidget->horizontalHeader()->setStyleSheet( "QHeaderView::section {background-color: rgb(152, 255, 255);}");

设置tableWidget的内容

	//tableWidget表的行数
	int conRow = ui->tableWidget->rowCount();
	//开始插入一行
	ui->tableWidget->insertRow(conRow);
	QTableWidgetItem *itemName= new QTableWidgetItem;
	itemName->setText(name); 
	//设置值第几行、第几列、item的内容                             
	ui->tableWidget->setItem(conRow, 0, itemName);

	QTableWidgetItem *itemPhone= new QTableWidgetItem;
	itemPhone->setText(telephone);
	ui->tableWidget->setItem(conRow, 1, itemPhone);             	
	
	QTableWidgetItem *itemAddress= new QTableWidgetItem;
	itemAddress->setText(address);
	ui->tableWidget->setItem(conRow, 2, itemAddress);           
· 简写等价于以下代码
	//开始插入一行
	ui->tableWidget->insertRow(conRow);
	//设置值第几行、第几列、item的内容
	ui->tableWidget->setItem(conRow,0,new QTableWidgetItem(name));
	ui->tableWidget->setItem(conRow,1,new QTableWidgetItem(telephone));
	ui->tableWidget->setItem(conRow,2,new QTableWidgetItem(address));

遍历tableWidget,根据lindEdit输入的关键字进行搜索

	int Cnt = 0;
	//获取tableWidget有几行数据
    int conRow = ui->tableWidget->rowCount();
    QString strInput= ui->lineEdit->text();
    qDebug()<<"输入所要查找的字符为:"<<strInput<<endl;
    //4表示有几列数据,4即为4列数据
    for(int j = 0; j<4;j++)
    {
        for(int i = 0;i<conRow;i++)
        {
            if(ui->tableWidget->item(i,j)->backgroundColor() == QColor(255,255,0))
            {
                ui->tableWidget->item(i,j)->setBackgroundColor(QColor(255,255,255));
            }
            //判断内容是否一致
            //ui->tableWidget->item(i,j)->text().contains(strInput)可实现关键字搜素
            if(strInput== ui->tableWidget->item(i,j)->text()&&strInput!= NULL)
            {
                Cnt++;
                ui->tableWidget->item(i,j)->setBackgroundColor(QColor(255,255,0));
                qDebug()<<"查找所输入的字符"<<strInput<<"所在第"<<i+1<<"行第"<<j+1<<"列"<<endl;
            }
        }
    }
    //清空输入关键字的输入框
    ui->lineEdit->clear();
    if(Cnt == 0&&strInput!= NULL)
    {
        QMessageBox::warning(this,tr("提示"),tr("查询所输入字符不存在!"),QMessageBox::Yes);
        qDebug()<<"查找字符"<<strInput<<"不存在"<<endl;
    }
    if(strInput== NULL)
    {
        QMessageBox::warning(this,tr("提示"),tr("请输入!"),QMessageBox::Yes);
        qDebug()<<"查找字符"<<strInput<<"不存在"<<endl;
    }

五、设置控件的显示隐藏

· 存在多种方法 setVisible、show / hide、setFixedSize
	//设置是否可见,false不可见、true可见
	ui->tableWidget->setVisible(false);
	ui->tableWidget->setVisible(true);
	//显示,通过析构函数控制
	ui->tableWidget->show();
	//隐藏
	ui->tableWidget->hide();
	//以上控件都不再占位,重新布局
	//通过修改大小来控制
	ui->tableWidget->setFixedSize(0,0);
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值