Qt常用记录_自用

记录常用的用过的Qt相关操作,方便使用。

类型转换

QString与基本数据类型转换:

QString str =100;
int tmp = str.tolnt();

int tmp = 100;
QString str = QString::number(tmp);

double data= 40.215586810458;
QString str = QString::number(data,'f',10);

#include <QTextStream>
QString num("12.3456789");
double d= num.toDouble();
qDebug()<<fixed<<gSetRealNumberPrecision(7)<<d; // fixed 表示非科学记数法,7表示小数点位数。

转std::string

string s= qstr.toStdString()
QString qstr2 = QString::fromStdString(s);

QTextCodec* code = QTextCodec::codecForName("gb2312"); 
m_realPath = code->fromUnicode(qfilaPath).data(); 

Qlmage与Mat转换:(待测试)

Qlmage Mat2Qlmage(const cv::Mat& InputMat)
{
	cv::Mat TmpMat;
	Qlmage Result;
	if (InputMat.channels()==1) {
		cv:cvtColor(InputMat, TmpMat, CV_GRAY2RGB);
		Result = Qlmage((const uchar*)(TmpMat.data), TmpMat.cols, TmpMat.rowsTmpMat.cols*TmpMat.channels(),Qlmage::Format_Indexed8);
	} else {
		cv::cvtColor(InputMat, TmpMat, CV_BGR2RGB);
		Result = Qlmage((const uchar*)(TmpMat.data), TmpMat.cols, TmpMat.rows, TmpMat.cols*TmpMat.channels(), Qlmage::Format_RGB888);
	}
	Result.bits();
	return Result;
}

窗口操作

打开文件夹并显示图片

QString filename;
filename = QFileDialog::getOpenFileName(this,
		tr("Select picture to open"),
		"",
		tr("Images (*.png *.bmp *.jpg *.tif *.GIF )"));//可打开的文件类型
// 打开文件夹
// QString ImagePath = QFileDialog::getExistingDirectory(this, "请选择路径...", "./");
if (!filename.isEmpty()) {
	QImage* img = new QImage;
	if (!(img->load(filename))) { //加载图像
		QMessageBox::information(this, tr("fail"), tr("fail!"));
		delete img;
	}
	//ui.label->setPixmap(QPixmap::fromImage(*img));
	ui.label->setPixmap(QPixmap::fromImage(img->scaled(ui.label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation)));//图片自适应窗口大小,保证图像宽高比例	
}

提示框创建(参考):

QMessageBox::StandardButton result = QMessageBox::information(&widget, "Title","text");

显示相关

中文显示乱码问题:

QString::fromLocal8Bit("界面显示中文") ;// tr是用来实现国际化,如果你为这个程序提供了中文翻译包(其中hello被翻译成中文"你好"),那么text1的内容将是中文"你好";如果你为程序提供且使用日文翻译包,那么text1的内容将是日文。

或者在高级保存选项中将文件编码格式改为UTF-8,参考链接

计时

QElapsedTimer time;
time.start();
//程序代码
int milsec = time.elapsed();
qDebug() << time.elapsed() << "ms";

QTimer定时器:

connect(&timer, &QTimer::timeout, this, &ItkDetect::onTimerFrame);
QTimer::singleShot(200, this, SLOT(updateCaption()));//静态函数方法

当前时间

QDateTime dateTime = QDateTime::currentDateTime();//获取系统当前的时间
return dateTime.toString("yyyy-MM-dd hh:mm:ss");//格式化时间

QTableWidget

参考查询12

ui.tableWidget->setColumnCount(2);//设置行列
ui.tableWidget->setRowCount(2);

ui.tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section { border:none; background-color: rgb(230,230,230); font-weight: bold; color: rgb(120, 120, 120); }");
ui.tableWidget->setHorizontalHeaderLabels(QStringList()<<"name"<<"age");//设置表头

ui.tableWidget->verticalHeader()->setVisible(false);   //隐藏列表头  
ui.tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头

ui.tableWidget->horizontalHeader()->setFixedHeight(60);
ui.tableWidget->setColumnWidth(3,200);  //设置行列大小
ui.tableWidget->setRowHeight(3,60);
ui.tableWidget->resizeColumnsToContents();  //自适应
ui.tableWidget->resizeRowsToContents();

ui.tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //可多选(Ctrl、Shift、 Ctrl+A都可以)
ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //设置选择行为时每次选择一行
ui.tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置不可编辑

ui.tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条
ui.tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);  //去掉垂直滚动条

//排序,默认排序为升序
ui.tableWidget->setSortingEnabled(true);
ui.tableWidget->sortByColumn(index,Qt::SortOrder::AscendingOrder);//改变第index列为降序排列
ui.tableWidget->sortByColumn(index,Qt::SortOrder::DescendingOrder);//改变第index列为降序排列

//单元格内容更新:直接重新赋值
// 在表格中添加一个新行  
int rowIndex = ui.tableWidget->rowCount();
ui.tableWidget->insertRow(rowIndex);
QString fillingRate = QString::number(m_penetration.dFillingRate);
QTableWidgetItem *item = new QTableWidgetItem(fillingRate);
item->setTextAlignment(Qt::AlignCenter);
item->setForeground(QColor(Qt::red));//设置字体颜色,Qt6
ui.tableWidget->setItem(i, 3, item);

//数据读取,行列序号均从0开始
QString str = ui.TableWidget->item(row,column)->text();//取出字符串
int num = str.toInt();//转成int

ui.tbLogs->scrollToBottom();//滚到最后一行

QCombobox

ui.cbCamLists->clear();//清空
ui.cbCamLists->addItem(camNames[camIndex]);//添加元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值