QT学习之路(2):基础学习(1)
2015-12-20 13:22
351 查看
[0]下面的代码主要是用来熟悉connect函数的信号-槽(signal-slot)机制,槽在本例中是以函数的形式出现的,它类似于C++的function类型,可以接受static,lambda表达式.
[1]qDebug()类似于C++的cout,需要在pro文件里加一行
QMAKE_CXXFLAGS += -std=c++0x//暂时不懂为什么
[2]信号和槽的机制必须要一致:
所谓一致,是参数类型一致。如果不一致,允许的情况是,槽函数的参数可以比信号的少,即便如此,槽函数存在的那些参数的顺序也必须和信号的前面几个一致起来。这是因为,你可以在槽函数中选择忽略信号传来的数据(也就是槽函数的参数比信号的少),但是不能说信号根本没有这个数据,你就要在槽函数中使用(就是槽函数的参数比信号的多,这是不允许的)。
#include "widget.h" #include "QPushButton" #include <QApplication> #include <QDebug> int main(int argc, char *argv[]) { QApplication a(argc, argv); QPushButton button("Quit"); QObject::connect(&button,&QPushButton::clicked,[&]( ){qDebug()<<"You cliked me"; QApplication::quit();}); button.show(); return a.exec(); }
======================================================================================
自定义信号槽:
//newspaper的头文件 #ifndef NEWPAPER #define NEWPAPER #include "QObject" class Newspaper : public QObject { Q_OBJECT public: Newspaper(const QString & name) : m_name(name) { } void send() { emit newPaper(m_name); } signals: void newPaper(const QString &name);//定义信号槽 private: QString m_name; }; #endif // NEWPAPER
//reader的头文件 #ifndef READER #define READER #include <QObject> #include <QDebug> class Reader : public QObject { Q_OBJECT public: Reader(const QString& name): r_name(name) {} void receiveNewspaper(const QString & name) { qDebug() <<r_name<<"Receives Newspaper: " << name; }//定义接受函数 private: QString r_name; }; #endif // READER
//main.cpp #include <QCoreApplication> #include "newpaper.h" #include "reader.h" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); Newspaper newspaper("NewPaper A"); Reader reader("B"); QObject::connect(&newspaper, &Newspaper::newPaper, &reader, [&](const QString name){reader.receiveNewspaper(name);QCoreApplication::quit();}); newspaper.send();//发送信号 return a.exec(); }
相关文章推荐
- Qtcreator中常用快捷键总结
- Mac配置Qt环境——Could not resolve SDK path for 'macosx10.8'
- 自学QT之代理Delegate
- Qt4.8.6+mingw+Qgis2.4.0基于QGis的二次开发
- PyQt4学习笔记8之绘图
- 18、osg3.2.1+qt5.5+vs2010例子,也是osg中的例子
- Qt之Q_PROPERTY宏定义二
- Qt之Q_PROPERTY宏定义
- 制作QT镜像文件
- <基于Qt与POSIX线程>多线程下载器的简易搭建
- Qt遇到奇怪的问题--FTH
- QT 5.5.1 zynq 7000 的交叉编译
- Qt stylesheet 详解
- Qt之设置QWidget背景色
- Qt之设置QWidget背景色
- Qt学习——qt软件启动界面
- Qt 使用sqlserver
- Qt之自定义搜索框
- Qt之自定义搜索框
- qt中的lineEdit文本输入框的输入类型限制(三种验证类)