【QT设计】QT学习心得

1效果
在这里插入图片描述
2说明:环境vs2013+QT5.5
小白学QT,ui先画界面,槽函数放实现功能函数,最后链接槽函数与功能函数。
第一步:设计界面
在这里插入图片描述
第二步:.hpp的class中添加槽函数
private slots: 定义槽函数

第三步:.cpp中 实现槽函数,并且链接槽函数与信号
ui.setupUi(this);下面链接
connect(ui.start_button, SIGNAL(clicked()), this, SLOT(on_start()));
这句话的意思是:点击了启动按钮就跳转on_start()函数执行内容。

总结如下

1 信号常用触发形式

clicked——button
triggered——Qaction
在这里插入图片描述
菜单栏上的是QMenu
在这里插入图片描述
红色框中是QAction
在这里插入图片描述

2界面信息查看

对象查看器包含你界面所有的信息;
左边1表示你对应按钮或者label的别名,比如启动程序这个按钮别名为start_button,在程序中空控制这个按钮就必须用start_button。右边表示类型。
在这里插入图片描述
在这里插入图片描述

3多行显示信息

2.1 text edit
在这里插入图片描述
ui.textedit->append(“hello”);
ui.textedit->append(“bye”);
append函数可以实现自动换行显示。
2.2text Browser
在这里插入图片描述
ui.textbrowser->append(“hello”);

4如何更换字体颜色 大小

QString str = QString("

<font size="%1" color="%2">%3

").arg(6).arg(“red”).arg(“svm test”);//对应修改arg括号中即可
ui.testtext->append(str);

5槽函数定义

在你的类添加一个private slots:
所有槽函数就放在下面,槽函数指点击相应按钮触发的运行的函数。
在这里插入图片描述

6链接信号与槽

start_button:是启动按钮的别名,on_start 表示槽函数
connect(ui.start_button, SIGNAL(clicked()), this, SLOT(on_start()));
在这里插入图片描述
这句话的意思是:点击了启动按钮就跳转on_start()函数执行内容。

7退出界面函数

void on_bar_exit()
{
QApplication* app;
app->exit(0);
}

8打开文件,比如选择训练集或者测试集

头文件引用:
#include “QFileDialog”

QFileDialog *fileDialog = new QFileDialog(this);
fileDialog->setWindowTitle(tr("Choose Image"));
//设置默认文件路径
fileDialog->setDirectory(".");
//设置文件过滤器
fileDialog->setNameFilter(tr("Images(*.png *.jpg *.jpeg *.bmp)"));
//设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles
fileDialog->setFileMode(QFileDialog::ExistingFiles);
//设置视图模式
fileDialog->setViewMode(QFileDialog::Detail);
//存入所有文件的路径
QStringList fileNames;
if (fileDialog->exec())
{
	fileNames = fileDialog->selectedFiles();
}
//将QString转换为String用于Opencv读取路径
QString fileName;
for (int i = 0; i < fileNames.length(); i++)
{
	//将QStringList逐一读取到QString
	fileName = fileNames[i];
}

9 Mat类转为QImage作显示

图片显示框一般为ui中的Qlabel类
在这里插入图片描述

cv::Mat rgb;
m_src1 = cv::imread("1.png");
if (m_src1.empty()){ printf("no data!"); }
else{
	if (m_src1.channels() == 3)
	{
		cvtColor(m_src1, rgb, CV_BGR2RGB);
		m_test = QImage((const unsigned char*)(rgb.data),
			rgb.cols, rgb.rows, rgb.cols*rgb.channels(),
			QImage::Format_RGB888);
	}
	else
	{
		m_test = QImage((const unsigned char*)(m_src1.data),
			m_src1.cols, m_src1.rows, rgb.cols*m_src1.channels(),
			QImage::Format_RGB888);
	}
	ui.Qlabel->setPixmap(QPixmap::fromImage(m_test).scaled(ui.src_test->size()));
	ui.Qlabel->resize(ui.src_test->pixmap()->size());
}

10 int /float 转Qstring

		int i=10;
		QString PT1Str = QString("%1").arg(i);
		ui.testtext->append( PT1Str);

11 当报错找不到generated文档时

在这里插入图片描述
首次点击QT5 Qt Project Setting
在这里插入图片描述

version 选择版本信息。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35705332/article/details/85063316