Qt学习之路一

QApplication 应用程序类,有且只有一个

QT头文件没有.h

头文件和类名一样,前两个字母都是大写

exec()让用户一直进行,等待用户操作,等待事件发生

Q_OBJECT 信号与槽的时候需要,不用到信号和槽的话可以屏蔽

如果不指定父对象 两个窗体之间会互相独立

指定父对象有两种方式:1 setparent()方法  例如:QPushButton a; a.setparent(&w); 
					  2 通过构造函数 QPushButton b(&w);
指定父对象有好处:只要显示父对象,上面的子对象自动显示
	如果是指针变量,再调用之前需要动态分配空间,否则出现断错误,表现为异常出错

信号必须有signals关键字来声明
信号没有返回值,但可以有参数,所以可以重载
信号就是函数的声明,只需声明,无需定义 例如void mySignal();
使用方法: 调用emit mySignal(); 
对于重载函数,第一种方法:可以利用指针函数来区别,void(QPushButton::*p)()=&widget::mySignal
			  第二种方法:可以利用QT4信号连接,这种连接要求槽函数必须有slots关键字修饰
			  例如:connect(&subwin,SIGNAL(mySignal()),this,SLOT(myslot()));
					connect(&subwin,SIGNAL(mySignal(int,QString)),this,SLOT(myslot(int,QString)))
					第二种方法关键在于信号的参数,要与槽函数一一对应

str.toUtf8()转换为字节数组QByteArray
...data()   把QByteArray->char*

Lambda表达式,利用c++11的新特性,需要在项目文件中加:CONFIG +=C++11,QT配合信号一起使用,非常方便
方法:QPushButton *b=new QPushButton(this);
	  b->setText(Lambda表达式);
	  connect(b,&QPushButton::released,
			//[]加 =:把外部所有局部变量,类中所有成员以值传递方式
			//  加 &:引用符号,把外部所有局部变量
			//  加 this:类中所有成员以值传递方式
			[]()
			{
				qDebug<<"111";
			})

static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged)
//强制类型转换

要想qt中的控件能自适应大小 需要先设置 在窗体布局中进行布局,然后选择栅格布局

ui->label_7->setAttribute(Qt::WA_TranslucentBackground);//控件设置透明
background: transparent;//背景设置透明

QButtonGroup 按钮组的使用

   buttonGroup = new QButtonGroup;
    //第二个参数id可以自行定义
    buttonGroup->addButton(ui->pushButton_1,1);
    buttonGroup->addButton(ui->pushButton_2,2);
    buttonGroup->addButton(ui->pushButton_3,3);
    buttonGroup->addButton(ui->pushButton_4,4);
    buttonGroup->addButton(ui->pushButton_5,5);
    buttonGroup->addButton(ui->pushButton_6,6);
    buttonGroup->addButton(ui->pushButton_7,7);
    buttonGroup->addButton(ui->pushButton_8,8);
    buttonGroup->addButton(ui->pushButton_9,9);
    initButton();
connect(buttonGroup,SIGNAL(buttonClicked(int)),this,SLOT(buttonJudge(int)));

  QPushButton** button;
  button=new QPushButton*[ 5 ];
  button[ 0 ] = new QPushButton( this );
  button[ 1 ] = new QPushButton( this );
  buttonGroup->addButton(button[0],0);
  button[0]->setGeometry(50,50,50,50);
  button[0]->setGeometry(150,150,50,50);
  buttonGroup->addButton(button[1],1);

//利用纯代码添加一组有标号的按钮到按钮组中,这样可以利于识别各个按钮,对不同按钮实现不同操作

展开阅读全文

没有更多推荐了,返回首页