main函数中
- return a.exec( ); 让程序一直执行 等待用户操作*
QPushButton
QPushButton *p1;
p1.setText(QString(“close”)); //窗口标题
QPushButton b;
b.setText("_"); // 给按钮设置内容
QPushButton b(this);
p2 = new QPushButton(this);
b.setParent(this);
b.setParent(&w); //指定父对象
connect(p1,&QPushButton : : pressed,this,&Mywidget : : close);
/* p1: 信号发出者,指针类型 如果是类名 + &
* &QPushButton : : pressed: 处理的信号,&发送者的类名::信号名字
* this: 信号接受者
* &Mywidget : : close: 槽函数,信号处理函数 &接收的类名::槽函数名字
*/
signals:
/* 信号必须有signals关键字来声明
* 信号没有返回值,但可以有参数
* 信号就是函数的声明,只需声明,无需定义
* 使用:emit mySignal();
* 信号可以重载;
*/
void mySignal();
void mySignal(int, QString);
// 对应的处理函数参数类型应一致
// 使用时会出现二义性
// 用函数指针 void ( *p) ( ) = fun
//void (SubWidget: :*funSignal)( ) = &SubWidget::mySignal
输出
#include
int QString
qDebug( ) << a << str ;
输出中文
qDebug( ) << a << str.toUtf8( ) . data( );
// str.toUtf8( ) 先转换成 字节数组QByteArray
// ......data( ) 再从 QByteArray 转换成 char * ;
Lambda 表达式, 匿名函数对象
C++11增加的新特性,在项目文件中添加: CONFIG += C++11
connect(p1,&QPushButton::pressed,
[=]() multable //把外部所有局部变量、类中所有成员以值传递方式,默认只读
{ //用 multable修饰 可变
qDebug() << a ;
qDebug() << b ;
ui->stackedWidget->setCurrentIndex(1);
}
);
1>指定父对象后 2>直接或间接继承于QObject
子对象如果是动态分配空间的new ,不需要手动释放delete,系统会自动释放