勇哥的VC++应用框架学习之QT(5) 自定义控件


自定义控件在C#中用得很多,所以我们有必要看看QT里面是如何实现的。

Qt的自定义控件,跟新增一个新窗口步骤是一样的,只不过最后我们在另外一个窗口上如果想引用的话,先放一个QWidget控件上去,然后使用右键菜单的“提升为”功能,可以把继承为我们新定义的窗口。

下面勇哥说说详细步骤:


(1)你需要添加Qt Class,普通的C++类是不可以的。

image.png

选择Qt GUI Class,这个类会添加一个Ui窗体。

image.png


image.png


(2)在新增加的窗体上我放入了一个spinbox, 一个水平slider

image.png

至于这个自定义控件上的实现代码,我们在vs那边是完成。


(3)在你的程序主界面上,放入一个QWidget控件

然后右键菜单“提升为”,输入你自定义控件的类名字->勾选“全局包含”->点“添加”按钮->点提升按钮。

image.png

当提升为操作成功后,你会发现widget的继承类由原来的QWidget变成了SmallWidget类(即我们的自定义控件类)

image.png

下图演示了当你勾选了“全局包含后”,在右键菜单里就会多出一个“提升为”的列表,以方便操作。


image.png

image.png

源代码:


SmallWidget.cpp

#include "SmallWidget.h"
#include <ui_SmallWidget.h>

SmallWidget::SmallWidget(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
	
	//spinbox数值变动,slider跟着移动
	void(QSpinBox::* signal)(int) = &QSpinBox::valueChanged;
	connect(ui.spinBox, signal, ui.horizontalSlider, &QSlider::setValue);

	//slider移动,spinbox数值也跟着动
	connect(ui.horizontalSlider, &QSlider::valueChanged, ui.spinBox, &QSpinBox::setValue);


}

SmallWidget::~SmallWidget()
{
}

int SmallWidget::getvalue(){
	return ui.spinBox->value();
}

void SmallWidget::setvalue(int data){
	ui.spinBox->setValue(data);
}

QtForOpencv.cpp

#include "QtForOpencv.h"
#include <opencv2\opencv.hpp>
#include <opencv2\core.hpp>
#include <opencv2\imgcodecs.hpp>
#include <opencv2\imgproc.hpp>
#include <qdebug.h>

using namespace cv;
using namespace std;
QtForOpencv::QtForOpencv(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
	
	connect(ui.btnSet, &QPushButton::clicked, [=](){
		ui.widget->setvalue(50);
	});

	connect(ui.btnGet, &QPushButton::clicked, [=](){
		qDebug() << "当前值为:" << ui.widget->getvalue();
	});

	waitKey(0);

}


image.png


代码就没啥子好解释的了。

下一节勇哥想了解一下常见的订时器功能。这个功能在C#很简单就是丢一个Timer控件,实现的是基于界面线程的定时器。

那么QT是如何实现的呢?

QT里面常见的有两种方式,一是有订时器事件,二是基于QTime类。



--------------------- 

作者:hackpig
来源:
www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864