Qt不同类间传递变量方法总结
2018-01-09 11:25
274 查看
参考:http://blog.csdn.net/shangyaowei/article/details/17424673
最近开发一个程序,需要多个源文件,包括若干个头文件和若干个定义文件。因此如何在多个源程序间开发传递变量就成了一个关键问题。刚开始我通过构造函数传递参数,能成功传递但数据却不会自动更新。随后想到通过全局变量传递参数。一般来说在多个源程序间传递变量大概有两种方法,一是利用extern声明全局变量来进行传递,二是将全局变量定义成一个类的静态变量,通过类名::变量名进行调用。
通过若干次调试,两种方法都成功了,现将注意要点记录如下(注释部分为第二种方法):
本程序实现一个计数器,主窗口显示计数值(1s加1),点击按钮弹出子窗口,子窗口的lcd同步显示计数值。其中ui文件已用designer画好。
my_define.h文件:
my_define.cpp文件
dialog.h 文件
dialog.cpp文件
f1.h 文件
f1.cpp文件
main.cpp文件
dialog.pro文件
最近开发一个程序,需要多个源文件,包括若干个头文件和若干个定义文件。因此如何在多个源程序间开发传递变量就成了一个关键问题。刚开始我通过构造函数传递参数,能成功传递但数据却不会自动更新。随后想到通过全局变量传递参数。一般来说在多个源程序间传递变量大概有两种方法,一是利用extern声明全局变量来进行传递,二是将全局变量定义成一个类的静态变量,通过类名::变量名进行调用。
通过若干次调试,两种方法都成功了,现将注意要点记录如下(注释部分为第二种方法):
本程序实现一个计数器,主窗口显示计数值(1s加1),点击按钮弹出子窗口,子窗口的lcd同步显示计数值。其中ui文件已用designer画好。
my_define.h文件:
#ifndef MY_DEFINE_H #define MY_DEFINE_H extern int aa; #endif
my_define.cpp文件
#include "my_define.h" //int temp::aa=0; int aa=0;
dialog.h 文件
#ifndef MYFORM_H #define MYFORM_H #include "dialog_base.h" class MyForm : public MyFormBase { Q_OBJECT public: MyForm( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); ~MyForm(); protected: virtual void form_1slot(); protected slots: virtual void mytime1(); }; #endif
dialog.cpp文件
#include "dialog.h" #include "f1.h" //#include "my_define.h" #include <qpushbutton.h> #include <qstring.h> #include <qtimer.h> #include <qlineedit.h> extern int aa;//全局变量声明 MyForm::MyForm( QWidget* parent, const char* name, WFlags fl ) : MyFormBase( parent, name, fl ) { QTimer *timer1=new QTimer(this); connect(timer1,SIGNAL(timeout()),this,SLOT(mytime1())); timer1->start(1000,0); } void MyForm::mytime1() { LineEdit1->setText(QString::number( aa++)); // LineEdit1->setText(QString::number(temp::aa++)); } void MyForm::form_1slot() { int bb=20; Form1 *form1 = new Form1(bb);//通过构造函数传递参数bb form1->showFullScreen(); } MyForm::~MyForm() { }
f1.h 文件
#ifndef FORM1_H #define FORM1_H #include "f1_base.h" class Form1 : public ChildFormBase { Q_OBJECT public: Form1( int num=0,QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); virtual ~Form1(); public slots: void closeForm1(); protected slots: virtual void display_slot(); }; #endif // FORM1_H
f1.cpp文件
#include "f1.h" //#include "my_define.h" #include <qpushbutton.h> #include <qlcdnumber.h> #include <qtimer.h> extern int aa; Form1::Form1( int num,QWidget* parent, const char* name, WFlags fl ) : ChildFormBase( parent, name, fl ) { QTimer *flashtimer=new QTimer(this); connect(flashtimer,SIGNAL(timeout()),this,SLOT(display_slot())); flashtimer->start(500,0); LCDNumber2->display(num);//lcd2显示bb connect( BackMainButton , SIGNAL(clicked()) , this , SLOT(closeForm1()) ); } void Form1::display_slot() { LCDNumber1->display(aa); // LCDNumber1->display(temp::aa);//lcd1实时显示aa } Form1::~Form1() { // no need to delete child widgets, Qt does it all for us } void Form1::closeForm1() { close(); }
main.cpp文件
#include "dialog.h" #include <qtopia/qpeapplication.h> QTOPIA_ADD_APPLICATION("dialog",MyForm) QTOPIA_MAIN
dialog.pro文件
TEMPLATE = app CONFIG += qtopia warn_on release HEADERS = dialog.h \ my_define.h\ f1.h SOURCES = dialog.cpp \ my_define.cpp\ f1.cpp\ main.cpp INTERFACES = dialog_base.ui \ f1_base.ui TARGET = dialog
相关文章推荐
- Qt多线程间传递变量方法总结
- Qt窗体间传递变量方法总结
- qt中在不同类间传递参数的几种方式
- qt中在不同类间传递参数的几种方式
- java中传递基础数据类型值与传递数组引用变量给方法的不同之处
- qt中在不同类间传递参数的几种方式
- php中页面之间传递变量方法总结
- QT 全局变量所遇见的问题,以及参考网上的解决方法,做个总结,提醒自己
- 首先是点击事件在不同的布局层次中传递的。 理解Down事件再哪个层次被消费(拦截),后续的Move、Up的点击事件如何传递。 其中ViewGroup中onInterceptTouchEvent方法
- Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全
- A框架第一步,传递不同参数.主程序执行对应方法
- C 语言不同C文件中 enum 枚举变量的使用方法
- [黑马程序员]对两个整数变量的值进行交换的方法总结
- js调用方法传递变量作为参数的问题
- 总结对比不同方法获取控件的宽和高
- Android读取不同位置(drawable,asset,SDCard)下的图片 方法总结
- AWK与SHELL之间的变量传递方法
- Android获取内存的不同方法总结
- shell给多个变量赋值的方法总结
- 关于 字符串中的单引号, 在sql存储过程中的传输总结; 逗号分隔的多个变量提取方法.