几乎所有的Qt类的构造函数都会有一个parent参数.这个参数通常是QObject* 或者是 QWidget* 类型的.很多情况下它都会有一个初始值0,因此,即便你不去给它复制也没有丝毫的问题.于是,稍微偷懒一下,就会不自觉的忽略了这个参数.那么,这个参数到底是干什么用的呢?   其实,这个参数有很多用处.就像它的名字一样,这个参数指定了组件的父组件.对于一个对话框来说,对话框一般是不作为顶层容器出现的,因此在任务栏上一般是没有对话框的位置的.怎么指定这个对话框不是顶层容器呢?有父组件的组件不就…
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } 1.QMainWindow 是 MainWindow 的父类 2.QWidget *parent 中的 parent 值赋值给 QMainWindow(parent) 中的 parent,这其实是用到C++的语法,执行MainWindow的构造函数前先执行父类QMainWindow…
这是一篇很简单的文章,仅仅是用来说明一下一个参数的作用,因此我把它写成了tip,而不是接下来的17.   程序写的多了,你会发现几乎所有的Qt类的构造函数都会有一个parent参数.这个参数通常是QObject* 或者是 QWidget* 类型的.很多情况下它都会有一个初始值0,因此,即便你不去给它复制也没有丝毫的问题.于是,稍微偷懒一下,就会不自觉的忽略了这个参数.那么,这个参数到底是干什么用的呢?   其实,这个参数有很多用处.就像它的名字一样,这个参数指定了组件的父组件.对于一个对话框来说…
程序写的多了,你会发现几乎所有的Qt类的构造函数都会有一个parent参数.这个参数通常是QObject* 或者是 QWidget* 类型的(定义新的类是通常首先初始化为0,在类的实现函数中赋值).很多情况下它都会有一个初始值0,因此,即便你不去给它复制也没有丝毫的问题.于是,稍微偷懒一下,就会不自觉的忽略了这个参数.那么,这个参数 到底是干什么用的呢? 有了此参数,子类才会继承父类在构造函数中初始化了的数据,否则,父类的初始化数据的构造函数不执行,无法继承数据,如果吧数据定为私有的,又不便于类…
往期链接: <QThread源码浅析> <子类化QThread实现多线程> 从往期<QThread源码浅析>可知,在Qt4.4之前,run 是纯虚函数,必须子类化QThread来实现run函数.而从Qt4.4开始,QThread不再支持抽象类,run 默认调用 QThread::exec() ,不需要子类化QThread,只需要子类化一个QObject,通过QObject::moveToThread将QObject派生类移动到线程中即可.这是官方推荐的方法,而且使用灵活…
<?php class test_construct_avg { function __construct($input = '') { $this->input = $input; } function w() { var_dump($this); var_dump($this->input); } function change_construct_avg($new_input) { $this->input = $new_input; } } $w = new test_co…
在框架开发,模块化开发等场合,我们可能有一种需求,那就是在PHP运行时动态实例化对象. 什么是动态实例化对象呢?我们先来看一下PHP有一种变量函数(可变函数)的概念,例如如下代码: function foo() { echo 'This is the foo function'; } $bar = 'foo'; $bar(); 运行上述代码将会输出“This is the foo function”.具体请参考PHP手册:可变函数.当然,如果需要动态调用的话,那么就使用call_user_fun…
前言 在ASP.NET Core中引入了DI,并且通过构造函数注入参数,控制器中会大量使用DI注入各种的配置参数,如果配置注入的参数比较多,而且各个控制器需要的配置参数都基本一样的话,那么不断重复的复制黏贴代码提供相应的构造函数,效率低效也,因此使用T4模板生成控制器的构造函数 ,这也得益于C#对分部类(partial)的支持. T4模板生成控制器构造函数 图中CtrlTemplate.tt为模板文件,CtrlNames.txt为需要使用T4生成代码的控制器名称文件,CtrlTemplate.c…
在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识.在effective C++中说过这么一点:拷贝构造函数的参数必须是引用类型的.但是为什么呢? 拷贝构造函数的参数必须是引用类型的 如果拷贝构造函数中的参数不是一个引用,即形如CClass(const CClass c_class),那么就相当于采用了传值的方式(pass-by-value),而传值的方式会调用该类的拷贝构造函数,从而造成无穷递归地调用拷贝构造函数.因此拷贝构造函数的参数必须是…
[转]为什么复制构造函数的参数需要加const和引用 一.引言 1.0在解答这个问题之前,我们先跑个小程序,看下调用关系. #include <iostream> using namespace std; class CExample { public: CExample(int x) :m_nTest(x) //带参数构造函数 { cout<< "constructor with argument."<<endl; } CExample(const…
Java中构造函数传参数在基本数据类型和引用类型的区别 如果构造函数中穿的参数为基本数据类型,如果在函数中没有返回值,在调用的时候不会发生改变:而如果是引用类型,改变的是存储的位置,所有不管有没有返回值在调用时都会发生改变. public class Num{ /* 参数为引用类型的时候 */ public static void main(String[] args){ int x=1; int y=2; change(x,y); Systm.out.println(arr[3]);//666…
1 背景 通过串口终端启动arm开发板(linux系统)的Qt应用程序,提示: [root@FORLINX6410]# /opt/qt-4.7.1/demos/textedit/textedit s3c-nand: 1 bit(s) error detected, corrected successfully QWSSocket::connectToLocalFile could not connect:: No such file or directory QWSSocket::connect…
简单的说,每个QObject的对象,都和某个创建对象所在的线程关联,如果把对象通过 moveToThread 移动到其他线程,这个对象不能有父对象,否则会出现 QObject::moveToThread: Cannot move objects with a parent A QObject instance is said to have a thread affinity, or that it lives in a certain thread. When a QObject receiv…
看别人代码看到void on_MyWidget_slotTest(); 就郁闷了,没看到他代码里有connect 却能把信号和槽可以连接起来. 今日回顾书本发现该函所的nb之处. QMetaObject::connectSlotsByName(QObject * object)将递归的搜寻传入的Qt对象object的所有子对象,并把所有匹配的子对象的信号关联到object对象的符合下列规则的槽函数void on_<窗口部件名称>_<信号名称>(<信号参数>) 如果窗口部…
我在QGraphicsScene子类中添加了item的弹出菜单,并连接Action到槽函数,结果槽函数不起作用,输出:QObject::connect: No such slot ***  C++ Code  12345678910111213141516171819202122232425   //选中item后弹出右键菜单 if (event->button() == Qt::RightButton) {     m_pItemSelected = nullptr;     foreach …
看别人代码看到void on_MyWidget_slotTest(); 就郁闷了,没看到他代码里有connect 却能把信号和槽可以连接起来. 今日回顾书本发现该函所的nb之处. QMetaObject::connectSlotsByName(QObject * object)将递归的搜寻传入的Qt对象object的所有子对象,并把所有匹配的子对象的信号关联到object对象的符合下列规则的槽函数void on_<窗口部件名称>_<信号名称>(<信号参数>) 如果窗口部…
在我的上一篇随笔里面分析了jQuery的构造函数,jQuery对象中有一个原型方法init才是是真正的构造函数,通过init的原型对象跟jQuery的原型对象保持引用关系使得init的实例可以正常调用jQuery的原型方法,就好像是jQuery的实例一样.下面就来看看init这个幕后的构造函数是怎么写的: init: function( selector, context, rootjQuery ) { ... } 可以看到这个方法接受3个参数,其前两个参数是jQuery方法传递过来的 var…
分析完了字符串情况剩下的就不多了. 5.参数selector是函数 这个就是很容易想到了,首先说一下dom加载.我们通常在head里面写脚本的时候需要等待文档加载在进行处理,js是这么写的 window.onload=function(){ your code... } 但是这样是需要等待所有资源都加载完毕才会执行,如果页面有很多图片的话就会加载的很慢.dom2级呢有一个加载完成事件DOMContentLoad比较好用,这个事件是会在html文档结构加载完毕触发.比如说这个页面有10个img元素…
接着上一篇随笔讨论. 如果selector是其他字符串情况就比较多了比较复杂了 // Handle HTML strings if ( typeof selector === "string" ) {...} 开始分不同的情况处理 // Are we dealing with HTML string or an ID? if ( selector.charAt(0) === "<" && selector.charAt( selector.le…
运行嵌入式程序 在嵌入式QT版本中,程序需要服务器或自己作为服务器程序.服务器程序构造的方法是构造一个QApplication::GuiServe类型的QApplication对象.或者使用-qws命令选项启动程序. Using a Single Display 使用-qws选项 接下来的程序可以当做客户端来运行,只要不使用-qws选项.那么客户端程序就会自动连接到服务程序中. using Mutiple Displays 嵌入式版本中运行多个县市同时运行.两种方式可以实现,要么多次运行服务程序…
构造函数是一种特殊的成员函数,在创建对象时自动执行,主要用来进行初始化工作,例如对 private 属性的成员变量赋值. 对成员变量的初始化,除了在构造函数的函数体中一一赋值,还可以采用参数初始化表.请看下面的代码: class Student{ private: char *name; int age; float score; public: Student(char *, int, float); void say(); }; //在构造函数中采用参数初始化表 Student::Stude…
运行嵌入式程序 在嵌入式QT版本中,程序需要服务器或自己作为服务器程序.服务器程序构造的方法是构造一个QApplication::GuiServe类型的QApplication对象.或者使用-qws命令选项启动程序. Using a Single Display使用-qws选项接下来的程序可以当做客户端来运行,只要不使用-qws选项.那么客户端程序就会自动连接到服务程序中. using Mutiple Displays嵌入式版本中运行多个县市同时运行.两种方式可以实现,要么多次运行服务程序,要么…
本来打算把<Qt学习之路>作为一个类似教程的东西,所以就不打算把一些关系到源代码的内容放在那个系列之中啦.因此今天就先来看一个新的开始吧!这个系列估计不会进展很快,因为最近公司里面要做 flex 的项目演示,所以时间不是很多啦,并且源代码也不是那么容易看的.豆子也不是 C/C++ 出身,因此看起来也会有些麻烦. <Qt源码剖析>作为一个独立的系列,大致就是对Qt的源代码进行分析.个人以为,分析的目的不在于你去写一个Qt出来,而是学习它的设计巧妙之处.正如我们去学习编译器的设计与实现…
connect用于连接qt的信号和槽,在qt编程过程中不可或缺.它其实有第五个参数,只是一般使用默认值,在满足某些特殊需求的时候可能需要手动设置. Qt::AutoConnection: 默认值,使用这个值则连接类型会在信号发送时决定.如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型.如果接收者和发送者不在一个线程,则自动使用Qt::QueuedConnection类型. Qt::DirectConnection:槽函数会在信号发送的时候直接被调用,槽函数运…
参考自:https://blog.csdn.net/sunSHINEEzy/article/details/78122485 构造函数之默认构造函数(调用的构造函数不用传递参数) 两种实例化方式都是默认构造函数 构造函数之初始化列表 红字部分即为初始化列表:一个引号,多个参数用逗号隔开,赋值用()   初始化列表特性: 其先于构造函数执行 其只能用于构造函数 其可以同时初始化多个数据成员 [注意]初始化列表的功用:对于类中的静态常量,不能用构造函数来初始化,必须使用初始化列表的方式 拷贝构造函数…
在QT5中,信号有参数和无参数 #ifndef SUBWIDGET_H #define SUBWIDGET_H #include <QWidget> #include <QPushButton> class SubWidget : public QWidget { Q_OBJECT public: ); void sendSlot(); signals: /*信号必须有singles关键字来声明 * 信号没有返回值,但可以有参数 * 信号就是函数的生命,只需声明,无需定义 * 使用…
可以随便的转载,只要按照规矩走带上咱论坛的链接就好. ======================================全文是按照./configure -help来翻译的==========================================Usage:  configure [-h] [-prefix <dir>] [-prefix-install] [-bindir <dir>] [-libdir <dir>]        [-docdir…
在实际开发中或许可能会遇到某个属性需要提供一个默认参数,如果该参数是引用类型的话,可以通过 使用 null 来表示未知的值,但如果是int或 其他值类型的话就有点不好办了,因为如果需要一个int或float表示一个未知数是比较麻烦的(尤其是查询数据库查询到的数据),假设 class Program { static void Main(string[] args) { Product p = new Product(); Console.WriteLine(p.Price); } } class…
静态工厂和构造具有共同的局限性:我们不能扩展到大量的非常好的可选参数. 1.对于多个可选參数的构造器.我们都习惯採用重叠构造器模式.比方一个參数的构造器调用2个參数的构造器.     2个參数的构造器调用3个參数的,以此类推. public class User{     private int id.     private String name.     private String age.     private String sex.          public User(int…
编译中出现以下警告: warning: unused parameter ‘arg1′ [-Wunused-parameter]原因是由于函数参数未使用,这在程序当中有时候很正常:所以个人认为此警告意义不大,可以取消: 方法一:在提示警告函数里面添加Q_UNUSED(arg1);方法二:在pro工程文件最后加入如下代码: QMAKE_CXXFLAGS +=  -Wno-unused-parameter…