【找方法/信号,会正确传参/新建/初始化对象】
- 【&】 用匿名对象传参
- 【*】用new返回指针传参
- 触发动作找信号,信号带参数,lamba保持参数一致
- 找到所在类的方法/信号,没有就往上找
容器布局
动起来
- 【找控件的信号】
- 【看函数的返回值】
connect(ui->pushButton,&QPushButton::clicked,[=](){
//获取用户户名
QString user= ui->lineEdit->text();
QString pwd=ui->lineEditPwd->text();
qDebug()<<user<<","<<pwd<<endl;
});
组容器【Group Box】
设置默认值
//设置单选框
ui->radioButtonNan->setChecked(true);
connect(ui->radioButtonNan,&QRadioButton::clicked,
[=](){
qDebug()<<"选中了男"<<endl;
});
列表控件【QListWidget】
- QStringList 字符串初始化"<<"操作符重载
- void QListWidget::addItem(QListWidgetItem * item)初始化参数
- QListWidgetItem*Item=new QListWidgetItem(“静夜思”);初始化QListWidgetItem,构造函数
- 触发动作,找信号和槽,保持参数一致
QListWidgetItem*Item=new QListWidgetItem("静夜思");
ui->listWidget->addItem(Item);
//添加:静夜思后四句
QStringList list;//链表容器,存放字符串【QStringList重载运算符】
list<<"窗前明月光"<<"举头望明月"<<"低头思故选个";
ui->listWidget->addItems(list);
//【触发动作,找信号和槽】【信号有参数】【lamba保持一致】
connect(ui->listWidget,&QListWidget::itemClicked,[](QListWidgetItem*item){
qDebug()<<item->text()<<endl;
});
树控件【QTreeWidget】
- 直接在ui上编辑,程序运行后不能更改
- 写代码完成
1.设置树控件头信息
2.添加顶层控件
3.添加子控件
4.动起来
//设置树控件头信息
QStringList list;
list<<"英雄"<<"英雄介绍";
ui->treeWidget->setHeaderLabels(list);//【参数是引用】
//添加顶层控件
//【匿名对象传参】
QTreeWidgetItem*item1=new QTreeWidgetItem(QStringList()<<"德玛");
ui->treeWidget->addTopLevelItem(item1);
item1->addChild(new QTreeWidgetItem(QStringList()<<"上单"<<"坦克,功高防厚"));
QTreeWidgetItem*item2=new QTreeWidgetItem(QStringList()<<"盲僧");
ui->treeWidget->addTopLevelItem(item2);
item2->addChild(new QTreeWidgetItem(QStringList()<<"上单"<<"坦克,功高防厚"));
QTreeWidgetItem*item3=new QTreeWidgetItem(QStringList()<<"提莫");
ui->treeWidget->addTopLevelItem(item3);
item3->addChild(new QTreeWidgetItem(QStringList()<<"上单"<<"法师,玩到"));
//添加子控件,【QTreeWidgetItem的函数,不是treeWidget的函数】
//动起来【了解信号】
connect(ui->treeWidget,&QTreeWidget::itemClicked,[](QTreeWidgetItem*item,int column){
qDebug()<<item->text(column)<<endl;
表格控件【QTableWidget】
- QStringList()<<“英雄”<<“性别”<<“年龄”【字符串容器,用<<重载】
- ui->tableWidget->setItem(0,0,new QTableWidgetItem(QString(“张飞”))):传指针,用new实例化一个对象,构造函数初始化此对象
- QStringList name【字符串容器】
- name[i]【字符串】
- 看信号,信号传的参数决定了功能,关键是找谁的信号
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QTableWidget>
#include<QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//设置行数列数
ui->tableWidget->setColumnCount(3);
ui->tableWidget->setRowCount(5);
//设置表头信息 水平 垂直
ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"英雄"<<"性别"<<"年龄");
// ui->tableWidget->setVerticalHeaderLabels();
//向表中添加控件
ui->tableWidget->setItem(0,0,new QTableWidgetItem(QString("张飞")));
QStringList name;
QStringList sex;
name<<"guan"<<"zhang"<<"liu"<<"zhao"<<"于";
sex<<"nan"<<"nv"<<"nan"<<"nan"<<"mam";
for(int i=0;i<5;i++)
{
ui->tableWidget->setItem(i,0,new QTableWidgetItem(name[i]));//这不是匿名对象了,这咋不是呢
ui->tableWidget->setItem(i,1, new QTableWidgetItem(sex[i]));
ui->tableWidget->setItem(i,2,new QTableWidgetItem(QString::number(i+20)));//【静态方法】数字转字符
}
//动起来【看信号】【信号传的参数决定了功能】
connect(ui->tableWidget,&QTableWidget::itemClicked,
[](QTableWidgetItem*item){
qDebug()<<item->text()<<endl;
});
connect(ui->tableWidget,&QTableWidget::cellClicked,[](int row,int col){
qDebug()<<"row"<<row<<"col"<<col<<endl;
});
下拉列表框【QComboBox】
- 信号重载:返回值 (指针类型)(参数)=&函数
- 槽函数可以当普通函数使用
- 槽函数可以使用信号传递的参数,也可以使用别的函数
//添加选项
QStringList list;
list<<"bao"<<"bne"<<"hah"<<"whu";
ui->comboBox->addItems(list);
//设置默认选项【槽函数可以当普通函数使用】
ui->comboBox->setCurrentIndex(2);
//动起来【找信号】【信号重载】【用函数指针匹配,有形参,具体地匹配了地址】
void(QComboBox::*p)(int)=&QComboBox::currentIndexChanged;
connect(ui->comboBox,p,[=](int index){
qDebug()<<index<<endl;//利用信号给的参数
qDebug()<<ui->comboBox->currentText()<<endl;//【直接调用他的函数】
});
QLabel控件的使用
- 加载路径格式
pix.load(":/myheart.png")
1.创建QPixmap对象pix,并用load加载
2.直接匿名构造QPixmap
QPixmap pix;
pix.load(":/myheart.png");//【路径格式】
ui->label_2->setPixmap(pix);//不是传构造函数,而是公共函数【引用】
ui->label_3->setPixmap(QPixmap(":/myheart.png"));//【其实两种都行】
3.参数是指针,所以new一个新对象
QMovie*move=new QMovie(":/mario.gif");
ui->label_4->setMovie(move);//【指针】
动画的播放,具体实现就需要了解过才知道要用start
ui->label->setText("hehhe");//【ui是hello代码是hehhe】
qDebug()<<ui->label->text();
//设置图片
QPixmap pix;
pix.load(":/myheart.png");//【路径格式】
ui->label_2->setPixmap(pix);//不是传构造函数,而是公共函数【引用】
ui->label_3->setPixmap(QPixmap(":/myheart.png"));//【其实两种都行】
//设置动画
QMovie*move=new QMovie(":/mario.gif");
ui->label_4->setMovie(move);//【指针】
// ui->label_4->setMovie(new QMovie(":/mario.gif"))
move->setScaledSize(QSize(400,300));//【指针】
connect(ui->pushButton,&QPushButton::clicked,[=](){
move->start();//设置播放才能动
});
connect(ui->pushButton_2,&QPushButton::clicked,[=](){
move->stop();
});
}