关于Qt中自定义槽和信号的简单示例
来源:互联网 发布:apache工作模式 编辑:程序博客网 时间:2024/06/05 06:35
关于Qt中自定义槽和信号的简单示例
发布时间:2006-01-01 18:27:00 来源: ChinaUnix博客 作者: ChinaUnix博客 点击:1531
//customwnd.h
#ifndef __CUSTOM_WINDOW_H__
#define __CUSTOM_WINDOW_H__
#include "qapplication.h"
#include "qwidget.h"
#include "messagebox"
#include "qpopumenu.h"
class CustomWnd:public QWidget
{
Q_OBJECT //如果要自定义槽和消息,必须在这里调用这个宏,否则自定义的槽和消息将不会起作用
public:
CustomWnd(QWidget *parent = 0, const char *name = NULL);
~CustomWnd();
public slots: //自定义槽, 如果要自定义保护槽, 就声明为 protected slots:
void btnMessage(); //自定义无参数槽.
void slotTest(QString); //自定义槽.
signals: //自定义信号, 如果要自定义保护信号, 就在protected: 后声明.
//自定义信号只需要在这里声明, 然后将槽连接到信号即可,无需实现信号函数.信号函数与槽函数的返回值类型在任何时候都可以不同;
而且如果不关心信号传递下来的参数, 信号函数与槽函数的参数列表也可以不相同, 但是如果要访问信号传递下来的任何参数时,
信号函数与槽函数的参数列表必须相同.
void explains(); //如果要自定义槽和信号, explains信号是必须的
void sigTest(QString str); //自定义信号.
private:
QPushButton *m_pushBtnMsg;
};
#endif
//customwnd.cpp
CustomWnd::CustomWnd(QWidget *parent = 0, const char *name = NULL)
:QWidget(parent, name)
{
m_pushBtnMsg = new QPushButton("MessageButton", this);
m_pushBtnMsg->show();
connect(m_pushBtnMsg, SIGNAL(clicked()), this, SLOT(btnMessage())); //将自定义槽连接到内部信号, 这里就跟消息映射函数相似.
connect(this, SIGNAL(sigTest(QString)), this, SLOT(slotTest(QString))); //将自定义槽连接到自定义信号
}
CustomWnd::~CustomWnd()
{
delete m_pushBtnMsg;
}
void CustomWnd::btnMessage()
{
QMessageBox::warning(this, "WARNING", "just for test: will emit test signal");
emit sigTest(QString("Test Signal")); //发出自定义信号
}
void CustomWnd::slotTest(QString str)
{
QMessageBox::warning(this, "Customized signal test", str);
}
//test.cpp
#include "customwnd.h"
int main(int argc, char **argv)
{
QApplication a(argc, argv);
CustomWnd wnd;
a.setMainWidget(&wnd);
wnd.show();
return a.exec();
}
我们可以用qmake -project;qmake让Qt tool自动生成Makefile, 但是习惯自己写Makefile的人看见自动生成Makefile中大堆的代码, 心里极度不爽, 下面给出一个Makefile模板.
//Makefile
#QTVER = 3.3
QTVER = 4.1.4
ifeq($(QTVER), 3.3)
QTPATH = /usr/lib/qt-3.3
CFLAGS = -I$(QTPATH)/include
LDFALGS = -L$(QTPATH)/lib
LIBS = -lqt-mt
endif
ifeq($(QTVER), 4.1.4)
QTPATH = /usr/local/Trolltech/Qt-4.1.4
CFLAGS = -I$(QTPATH)/include -I$(QTPATH)/include/Qt -DQT3_SUPPORT
LDFALGS = -L$(QTPATH)/lib -L/usr/X11R6
LIBS = -lQtGui
endif
#moc 是Qt的工具
MOC = $(QTPATH)/bin/moc #一定要注意, 如果同时存在几个版本的QT, 必须是用正确的moc工具, 否则在编译moc文件的时候,会出现莫名其妙的错误.
MOCOBJSUFFIX = moc.o
MOCSRCSUFFIX = moc.cpp
MOCOBJS = $(MOCHEADERS:%.h=%.$(MOCOBJSUFFIX))
BIN = test
OBJS = test.o customwindow.o
#如果类申明中有Q_OBJECT, 就将相应的头文件添加到MOCHEADERS中.
MOCHEADERS = custonwnd.h
all:$(BIN)
$(BIN):$(OBJS) $(MOCOBJS)
$(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)
%.o:%.cpp
$(CXX) $(CFLAGS) $(CXXFLAGS) -o $@ -c $<
#定义由 moc 文件生成 .o 文件的隐含规则
%.$(MOCOBJSUFFIX):%.$(MOCSRCSUFFIX)
$(CXX) $(CFLAGS) $(CXXFLAGS) -o $@ -c $<
#定义由*.h生成 moc 文件的隐含规则
%.$(MOCSRCSUFFIX):%.h
$(MOC) -o $@ $<
clean:
$(RM) $(BIN) *.moc *.o
以上内容由 华夏名网 搜集整理,如转载请注明原文出处,并保留这一部分内容。
“华夏名网” http://www.sudu.cn 和 http://www.bigwww.com 是成都飞数科技有限公司的网络服务品牌,专业经营虚拟主机,域名注册,VPS,服务器租用业务。公司创建于2002年,经过6年的高速发展,“华夏名网”已经成为我国一家知名的互联网服务提供商,被国外权威机构webhosting.info评价为十大IDC服务商之一。华夏名网网址导航: 虚拟主机 双线主机 主机 域名注册 cn域名 域名 服务器租用 酷睿服务器 vps vps主机
- 关于Qt中自定义槽和信号的简单示例
- 关于Qt中自定义槽和信号的简单示例
- Qt中自定义槽和信号的简单示例
- Qt中自定义槽和信号的简单示例
- QT中自定义的信号和槽
- Qt中信号与槽的简单代码片段示例
- Qt的信号槽机制简单示例
- Qt的信号槽机制简单示例
- 【转】QT中自定义的信号和槽
- 在QT的信号和槽中使用自定义类型
- 关于Qt中信号和槽的Connection
- Qt自定义信号和槽
- Qt自定义信号和槽
- Qt自定义信号和槽
- QT 自定义信号和槽
- Qt-信号和槽中使用自定义数据类型
- Qt-信号和槽中使用自定义数据类型
- qt中信号和槽的总结
- showModalDialog 禁止表单提交后打开新标签页
- 我就操蛋了---------我是程序员没读过这么多书所以薪资很低
- Myeclipse编辑文件保存时报background indexer crash recovery错误及解决方式
- nginx+fastcgi文件下载不全的问题
- 关于jpct-ae结合相机预览,半透明出错
- 关于Qt中自定义槽和信号的简单示例
- C转义字符表
- 双链表的插删改查
- Hive限制
- codec 增加lib库的参考
- 谈谈从开始工作到现在的一些经历
- wav文件格式分析详解
- UA信息
- IE中使用Google Chrome Frame运行HTML 5