QString::number()强制转换int到QString;
- QT中最重要的是创建任何东西都需要指定父对象;
- Qt5 想把新加入的控件在主窗口上显示出来,需要指定子控件的父对象。
- 创建对象有两种方式,一种是非指针的:QPushbutten b1; b1.setPartent(this);
- 另一种是指针的:QPushbutten *b2; b2 = new QPushButten(this);
- 自定义信号必须必须用signals关键字来声明。
- 信号本身只需声明,没有返回值,可以有参数.
- 使用emit my_signal(); 来发送信号.
- 父窗口调用子窗口直接调用就可以
- 子窗口调用父窗口需要先发送信号,如果由按钮来跳转窗口,需要先使按钮信号发送到一个发送信号的槽函数,然后再定义这个槽函数发送一个自定义的信号(使用emit关键字),然后在父窗口中connect() 子窗口的信号,发送给自己定义的槽函数进行处理。
- 自定义的信号无需函数体,无需具体定义,只需声明就ok。
- 在父窗口里创建子窗口的对象 如:sub_win w;要显示子窗口,只需w.show()就ok。
- 子窗口按下按钮,emit my_signal();
- 父窗口connect(&sub_win对象,my_signal,this,deal_fun;)
- connect() 中所有的对象都用&来取对象地址,若定义时定义对象为指针对象,则connect()中不再需要&来取地址,否则(错误)。
- 信号可以重载,无需实现
- Qt5和Qt4 connect()的实现的区别
- Qt4connect()一因为将信号和槽函数函数名转化为字符串,不进行错误检查,二必须用SIGNAL和SLOTS修饰,不方便。
- lambda表达式,c++新加入,配合QT的信号方便使用,在pro文件加入CONFIG += C++11
- [=](){.........} 中的“=”是把外部所有的局部变量,类的成员以值传递的方式传递进来,切默认为只读。可以加mutable修饰(),可变的。或者用引用传递[&],但是若外部变量也为引用定义,则会错误(注意)。信号的传参可以直接传入匿名表达式中的(参数)中。
- 尽量使用Lambda表达式进行connect()信号与槽的传递。
- 父窗口坐标系统相对于屏幕左上角,子窗口相对于父窗口空白左上角。
- QMainWindow 常用于PC端,带有菜单栏,工具栏,等
- QMenuBar 菜单栏
- QMenu 菜单
- 以指针新建对象,必须要用new 对象。
- 模态用局部变量:Dialog dia;dia.exec();
- 非模态两种:(1)定义成员变量Dialog dia;dia.show();(2)使用匿名表达式中定义成局部变量Dialog *p = new Dialog(this);p.show(),使用局部变量若制动this父对象问题是容易造成内存泄漏。 也可以不指定this 父对象,使用p->setAttribute(Qt::WA DeleteOnClos);释放内存.
- 静态成员函数需要类名::调用
- LineEdit自动提示字符串,要用QStringList 头文件,Qcompletertou 头文件设定不区分字母大小写。
- 关于RGB:0~255。
- 自定义控件,需要执行(提升)行为,对自定义的控件右键进行提升.把ui中拖进去的控件提升为自定义的控件类型。
- 对于qt5线程,需要自定义线程类,继承与OBject,同时在主线程中创建子线程对象,把自定义的线程类加入到主线程中的子线程中去。启动线程函数必须用信号与槽来启动。
- 导入win下的系统库:#include <Windows.h> 使用 WinExec("calc", SW_HIDE);来隐藏不想要的cm黑窗口;