通过对一个已经存在的qt窗口部件进行子类化或者直接对qwidget进行子类化,就可以创建自定义窗口部件。以下直接对已有的qt窗口部件进行子类化:
如下通过对qlineedit进行子类化来实现自已需要的窗口部件,参考代码如下:
/**********************子类化的头文件*****************************/
#ifndeflineedit_h
#definelineedit_h
#include
#include
classlineedit:publicqlineedit
{
q_object
public:
explicitlineedit(qobject*parent=0);
protected:
voidmousedoubleclickevent(qmouseevent*);
};
#endif//lineedit_h
/**********************子类化的源文件*****************************/
#includelineedit.h
#include
lineedit::lineedit(qobject*parent)
{
}
//重新实现qlineedit类的mousedoubleclickevent(qmouseevent*event)
//事件处理函数,从而达到双击lineedit的时候会有一个消息框弹出
voidlineedit::mousedoubleclickevent(qmouseevent*event)
{
qmessagebox::information(this,tr(提示),tr(你是对的!));
event->ignore();
}
以上是我自己实现的自己的一个lineedit类,我双击这个lineedit控件,就会弹出个消息框出来。
首先建一个工程,把上面的两个文件放到工程目录下面,然后来实现自己的代码:
/**********************主窗口的头文件*****************************/
#ifndefmywidget_h
#definemywidget_h
#include
#includelineedit.h
classmywidget:publicqwidget
{
q_object
public:
explicitmywidget(qwidget*parent=0);
private:
lineedit*lineedit;
};
#endif//mywidget_h
/**********************主窗口的源文件*****************************/
#includemywidget.h
#include
mywidget::mywidget(qwidget*parent):
qwidget(parent)
{
lineedit=newlineedit;
qhboxlayout*hlayout=newqhboxlayout;
hlayout->addwidget(lineedit);
setlayout(hlayout);
}
/**********************显示主窗口的源文件*****************************/
#include
#include
#includemywidget.h
intmain(intargc,char*argv[])
{
qapplicationapp(argc,argv);
qtextcodec::setcodecfortr(qtextcodec::codecforname(gbk));
mywidget*mywidget=newmywidget;
mywidget->show();
returnapp.exec();
}
以下是运行后的一个效果:
说明:以上只是个测试程序,没有实际应用价值,具体的应用还在于实际工作中的需求。
常见减速电机系列有哪些?怎样找出这两个品牌的区别?
电感设计之最大磁通密度
LG发布G7 One与G7 Fit手机,搭配骁龙845处理器
工频电机改变频的危害
运算放大器的工作原理
Qt自定义窗口部件的创建
LTE专网未来将在5G网络领域中发挥重要作用
细菌电池的原理
电流互感器变比怎么选择
降压转换器-从分立电路到完全集成的模块
UL线材表面印字有什么相关标准?
LED产业发展双重动力:技术创新+政策引导
OBA已顺利完成了国航B737-800飞机7C+退租检工作
如何通过扩展频率带宽来实现更快的运算放大器动态
量子点发光原理
工信部:正常使用通信服务时,基站辐射不会对健康造成影响
工业以太网交换机怎么使用
大疆“自爆”10亿腐败危机
双轨直销软件新模版 双轨奖金制度自动结算系统正版
瑞尼执法记录仪在环保执法工作中的应用和优势